• Java 对象容器


    一、ArrayList 容器

    1、记事本

    package booknote;
    
    import java.util.ArrayList;
    
    public class NoteBook {
    	private ArrayList<String> notes=new ArrayList<String>();//引入ArrayList类,容器;包括容器类型,内容类型
    	
    	public void add(String s)//增加字符串
    	{
    		notes.add(s);//ArrayList 自带的add
    	}
    	public void add(String s, int location)//   add 函数重载
    	{
    		notes.add(location, s);
    	}
    	public int getSize()//得到字符串的个数
    	{
    		return notes.size();
    	}
    	public String getNote(int index)//获取第n个字符
    	{
    		return notes.get(index);
    	}
    	public void removeNote(int index)//删除 注意void 不返回值就可以了
    	{
    		notes.remove(index);
    	}
    	public String[] list()
    	{
    		String[] a=new String[notes.size()];
    //		for(int i=0;i<notes.size();i++)
    //		{
    //			a[i]=notes.get(i);
    //		}
    		
    		notes.toArray(a);  //黄色和绿色都可以实现将notes中的字符串赋给 字符串数组a中,一个是使用遍历的方法,一个是使用自带函数
    		return a;
    	}
    	
    
    	public static void main(String[] args) {
    		
    		NoteBook nb=new NoteBook();
    		nb.add("first");
    		nb.add("second	");
    		nb.add("third",0);//插入到0位置
    		String[] a=nb.list();
    		for(String s:a)
    		{
    			System.out.println(s);
    		}
    		System.out.println(nb.getNote(0));//得到0位置的字符串
    		
    		System.out.println("
    ");
    		nb.removeNote(0);//删除0位置元素
    		System.out.println(nb.getSize());
    		a=nb.list();//刷新a
    		for(String s:a)
    		{
    			System.out.println(s);
    		}
    	}
    
    }
    

    2、对象数组

    package Hello;
    
    public class hello {
    	
    	public int SUM(int a,int b)//必须创建对象调用
    	{
    		return a+b;
    	}
    	
    	public static int Sum(int a,int b)//static 方便在没有创建对象的情况下调用
    	{
    		return a+b;
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int x=10;
    		int y=5;
    		hello num=new hello();
    		System.out.println(Sum(x,y));//直接调用就可以
    		System.out.println(num.SUM(x,y));//必须创建对象,利用 对象.函数  才可以
    
    	}
    
    }
    

    3、对象数组和普通数组赋值差异

    package Hello;
    
    class Value{ //新建类这样建
    	private int i;
    	public void set(int i)
    	{
    		 this.i=i;
    	}
    	public int  get()
    	{
    		return i;
    	}
    	
    }
    
    public class hello {
    	
    	public static void main(String[] args) {
    		
    		Value[] a=new Value[10];
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=new Value();
    			a[i].set(i);
    		}
    		for(Value v:a)
    		{
    			System.out.print(v.get()+" ");
    			v.set(0);
    		}
    		System.out.println();
    		for(Value v:a)
    		{
    			System.out.print(v.get()+" ");
    		}
    	}
    }
    

     

    package Hello;
    
    public class test {
    
    	public static void main(String[] args) {
    		int[] a=new int[10];
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=i;
    		}
    		for(int v:a)
    		{
    			System.out.print(v+" ");
    			v=0;//无效
    		}
    		System.out.println();
    		for(int v:a)
    		{
    			System.out.print(v+" ");
    		}
    		System.out.println();
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=0;
    		}
    		for(int v:a)
    		{
    			System.out.print(v+" ");
    		}
    	}
    
    }
    

    可以看到在对象数组中for each可以改变赋值

    但是在普通数组中 for each 不可以改变赋值。

    这是因为,对象数组中指向的是对象的位置,可以改变对象的位置上的值。而int[]这类数组,指向的是数组上的值,不能通过值改变值。

    4、

    package Hello;
    
    class Value{ //新建类这样建
    	private int i;
    	public void set(int i)
    	{
    		 this.i=i;
    	}
    	public int  get()
    	{
    		return i;
    	}
    //	public String toString()  //转化为字符串输出
    //	{
    //		return ""+i;
    //	}
    	
    }
    
    public class hello {
    	
    	public static void main(String[] args) {
    		
    		Value[] a=new Value[5];
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=new Value();
    			a[i].set(i);
    		}
    		for(Value v:a)
    		{
    			System.out.println(v);
    		}
    	}
    }
    

    得到的其实是位置。

    加入public String toString()后程序如下图

    package Hello;
    
    class Value{ //新建类这样建
    	private int i;
    	public void set(int i)
    	{
    		 this.i=i;
    	}
    	public int  get()
    	{
    		return i;
    	}
    	public String toString()  //转化为字符串输出
    	{
    		return ""+i;
    	}
    	
    }
    
    public class hello {
    	
    	public static void main(String[] args) {
    		
    		Value[] a=new Value[5];
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=new Value();
    			a[i].set(i);
    		}
    		for(Value v:a)
    		{
    			System.out.println(v);
    		}
    	}
    }
    

     

    二、set容器

    package Hello;
    
    import java.util.ArrayList;
    import java.util.HashSet;
    
    public class test {
    
    	public static void main(String[] args) {
    	    ArrayList<String> s=new ArrayList<String>();
    		s.add("first");
    		s.add("second");
    		s.add("first");
    		for(String a:s)
    		{
    			System.out.println(a);
    		}
    		System.out.println(s);
    		System.out.println("************************");
    		
    		
    		HashSet<String> s1=new HashSet<String>();
    		s1.add("first");
    		s1.add("second");
    		s1.add("first");
    		s1.add("airst");
    		for(String a:s1)
    		{
    			System.out.println(a);
    		}
    		System.out.println(s1);
    	}
    
    }
    

    HashSet容器可以去重并且排序。

    三、Hashmap  

    可以利用HashMap生成键值对。

    package coins;
    
    import java.util.HashMap;
    import java.util.Scanner;
    
    public class coin {
    	private HashMap<Integer,String> coinnames=new HashMap<Integer,String>();//Integer是int 的包裹类型
    	
    	//public void Coin()
    	public coin()
    	{
    		coinnames.put(1,"penny");
    		coinnames.put(10,"dime");
    		coinnames.put(25,"quarter");
    		coinnames.put(50,"half-dolar");
    		coinnames.put(50,"yuan");    
    		System.out.println("********************");
    		System.out.println(coinnames);//输出HashMap集合
    		System.out.println(coinnames.keySet());//输出键集合
    		System.out.println(coinnames.values());//输出值集合
    		System.out.println(coinnames.values().size());//键(值)长度
    		System.out.println("********************");
    		for(Integer i:coinnames.keySet())
    		{
    			System.out.print(i+" ");
    		}
    		System.out.println("
    ********************");
    		for(String i:coinnames.values())
    		{
    			System.out.print(i+" ");
    		}
    		System.out.println("
    ********************");
    		for(Integer i:coinnames.keySet())
    		{
    			System.out.print(coinnames.get(i)+" ");
    		}
    		System.out.println("
    ********************");
    	}
    	public String getName(int amount)
    	{
    		if(coinnames.containsKey(amount))
    	    	return coinnames.get(amount);
    		else
    			return "Not Found";
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt();
    		coin money=new coin();
    		//money.Coin();
    		System.out.println(money.getName(n));
            in.close();
    	}
    
    }
    

    黄色部分,既可以直接用原类来增加键值对(public coin),

    也可以通过构造函数(public void Coin)来增加,如果利用构造函数的话,必须得调用函数才行。

    再有注意他们输出的方法。

  • 相关阅读:
    大并发服务器开发(实战)
    [亲测有效]Ubuntu20.04安装ROS1和ROS2
    Linux多进程开发(二)
    Linux网络编程(四 )
    统计当前系统的TCP连接状态的种类以及对应的个数
    Linux系统编程入门(一)
    gdb与core 最有效的调试手段之一
    Port was alread in use
    Nginx实现统一端口反向代理多个服务
    Windows Terminal打开管理员权限的PowerShell
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/9168320.html
Copyright © 2020-2023  润新知