zoukankan      html  css  js  c++  java
  • 集合

    集合

    集合类的分类
    * (一)List 结构集合类
    * ArrayList LinkedList Vector Stack
    * (二)Map 结构集合类
    * HashMap HashTable
    * (三)Set 结构集合类
    * HashSet TreeSet
    * (四)Queue 结构集合类和 Queue接口

    一、ArrayList

    1、什么是ArrayList

        ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:

    • 动态的增加和减少元素
    • 实现了ICollection和IList接口
    • 灵活的设置数组的大小

    大家知道,数组是静态的,数组被初始化之后,数组长度就不能再改变了。ArrayList是可以动态改变大小的。那么,什么时候使用Array(数组),什么时候使用ArrayList?答案是:当我们不知道到底有多少个数据元素的时候,就可使用ArrayList;如果知道数据集合有多少个元素,就用数组。

    2、初始化ArrayList的两种方法

      方式一:
          ArrayList<String> list = new ArrayList<String>();
          String str01 = String("str01");
          String str02 = String("str02");
          list.add(str01);
          list.add(str02);
      方式二:
          ArrayList<String> list = new ArrayList<String>(){{add("str01"); add("str02");}};  

    3.ArrayList常用方法

     ArrayList<String> list = new ArrayList<String>();

    增加元素到链表中

      list.add("Item1");

    从链表中删除元素

    list.remove("Item3");

    获取链表中的元素

     boolean element = list.contains("Item5");
     System.out.println("Checking if the arraylist contains the object Item5: " + element);

    String item = list.get(0);
     System.out.println("The item is the index 0 is: " + item);

    
    

    修改某个元素

     list.set(1, "NewItem");
       System.out.println("The arraylist after the replacement is: " + list);

    搜索元素

     System.out.println("Retrieving items with loop using index and size list");
    for (int i = 0; i < list.size(); i++) {
    System.out.println("Index: " + i + " - Item: " + list.get(i));
     }

    检查链表是否为空

    boolean check = list.isEmpty();
    System.out.println("Checking if the arraylist is empty: " + check);

    获取链表大小

    int size = list.size();
     System.out.println("The size of the list is: " + size);
    public class Xs {
        private String xingming;
        private int xuehao;
        private int chengji;
        
      Xs(String xingming,int xuehao ,int chengji){
            this.xingming=xingming;
            this.xuehao=xuehao;
            this.chengji=chengji;
        }
        public String getXingming(){
            return xingming;
        }
        public int getXuehao(){
            return xuehao;
        }
        public int chengji(){
            return chengji;
        }
    }
    
    
    
    public class Collection_2 {
        public static void main(String[] args){
            ArrayList aa1=new ArrayList();
            System.out.println("大小为"+aa1.size());
            Xs xs1=new Xs("悟空",15,90);
            Xs xs2=new Xs("八戒",13,70);
            Xs xs3=new Xs("沙僧",15,90);
            Xs xs4=new Xs("小白龙",20,80);
            aa1.add(xs1);
            aa1.add(xs2);
            aa1.add(xs3);
            System.out.println("大小为"+aa1.size());
            
            //aa1.remove(1);
            /*for(int i=0;i<aa1.size();i++){
                Xs tv=(Xs)aa1.get(i);
                System.out.println("第"+(i+1)+"个学生姓名是"+tv.getXingming());
            }*/
            
            aa1.add(1,xs4);
            for(int i=0;i<aa1.size();i++){
                Xs tv=(Xs)aa1.get(i);
                System.out.println("第"+(i+1)+"个学生姓名是"+tv.getXingming());
            }
        }
    }

    二、LinkedList

    LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
    LinkedList的构造函数如下
    1. public LinkedList():  ——生成空的链表
    2. public LinkedList(Collection col):  复制构造函数

    public class Collection_LinkedList {
    
    	public static void main(String[] args) {
    		LinkedList bb=new LinkedList();
    		Sp sp1=new Sp("001","话梅",5f);
    		Sp sp2=new Sp("002","薯片",8f);
    		
    		
    		bb.addFirst(sp1);//后进先出。先放进去的在最里面,后放进去的,在最外面
    		bb.addFirst(sp2);//
    		
    		for(int i=0;i<bb.size();i++)
    		{
    			//System.out.println(((Sp)bb.get(i)).getMingcheng());
    			//System.out.println(((Sp)bb.getFirst()).getMingcheng());
    			//System.out.println(((Sp)bb.getLast()).getMingcheng());
    		}
    		
    		bb.addLast(sp1);//先放进去的,先出去
    		bb.addLast(sp2);
    		
    		for(int i=0;i<bb.size();i++)
    		{
    			//System.out.println(((Sp)bb.get(i)).getMingcheng());
    			//System.out.println(((Sp)bb.getFirst()).getMingcheng());
    			//System.out.println(((Sp)bb.getLast()).getMingcheng());
    		}
    		
    		
    	}
    
    }
    

      

     二、Vector和Stack

     

    public class Collection_Vector {
    
        public static void main(String[] args) {
            Vector cc=new Vector();
            Sp sp1=new Sp("001","巧克力",20f);
            Sp sp2=new Sp("002","果脯",10f);
            
            cc.add(sp1);
            cc.add(sp2);
            for(int i=0;i<cc.size();i++)
            {
                System.out.println(((Sp)cc.get(i)).getMingcheng());
                
            }
            
            /*Stack dd=new Stack();
            Sp sp3=new Sp("003","巧克力3",20f);
            Sp sp4=new Sp("004","果脯4",10f);
            dd.add(sp3);
            dd.add(sp4);
            for(int i=0;i<dd.size();i++)
            {
                System.out.println(((Sp)dd.get(i)).getMingcheng());
                
            }*/
            
            
    
        }
    
    }

     三、HashMap

    public class Collection_HashMap {
    
        public static void main(String[] args) {
            HashMap ee=new HashMap();
            Sp sp1=new Sp("001","香肠",20);
            Sp sp2=new Sp("002","果脯",20);
            //Sp sp3=new Sp("003","面包",20);
            ee.put("001", sp1);
            ee.put("002", sp2);
            //ee.put("003", sp3);
            
            /*if(ee.containsKey("002"))
            {
                System.out.println("该食品信息为:");
                Sp sp=(Sp)ee.get("002");
                System.out.println(sp.getMingcheng());
                System.out.println(sp.getJiage());
            }
            else
            {
                System.out.println("对不起,没有该食品!");
            }*/
            /*for(int i=0;i<ee.size();i++)
            {
                ee.get();
            }*/
            //遍历不可以用for循环
            Iterator it=ee.keySet().iterator();
            while(it.hasNext())
            {
                String key=it.next().toString();
                Sp sp=(Sp)ee.get(key);
                System.out.println("食品名称:"+sp.getMingcheng());
                System.out.println("食品名称:"+sp.getJiage()+"元");
                
                
            }
        }
    
    }

    四、集合类的比较

    ArrayList 和Vector 的区别

    ArrayList 和 HashMap 都是线程异步的,所以他们的特点是效率高但是安全性低

    Vector 和 HashMap 都是 线程同步的,所以他们的特点 都是 效率低但是 安全性低

    五、泛型

    package Collection_Example;
    
    import java.util.ArrayList;
    
    public class Collection_fanxin {
    
    	public  void main(String[] args) {
    		ArrayList<Ls> ff=new ArrayList<Ls>();//通过泛型将类型定下来
    		Ls ls1=new Ls("薯片",5f);
    		ff.add(ls1);
    		Ls cls=(Ls)ff.get(0);
    		// Yl hyl=(Yl)ff.get(0);
    		
    
    	}
    	
    class Ls
    {
    	private String mingcheng;
    	private float jiage;
    	Ls(String mingcheng,float jiage)
    	{
    		this.mingcheng=mingcheng;
    		this.jiage=jiage;		
    	}
    }
    class Yl
    {
    	private String mingcheng;
    	private float jiage;
    	private String yanse;
    	Yl(String mingcheng,float jiage,String yanse)
    	{
    		this.mingcheng=mingcheng;
    		this.jiage=jiage;
    		this.yanse=yanse;
    		
    	}
    	}
    
    }
    

      

    六、反射机制

    package Collection_Example;
    
    import java.lang.reflect.Method;
    
    public class Collection_fanshejizhi {
        public static void main(String[] args)
        {
            //Bh<String> hw1=new Bh<String>("货物1");
            //Bh<Integer> hw2=new Bh<Integer>(123);
            Bh<Wj> hw3=new Bh<Wj>(new Wj());
        }
    }
    class Wj
    {    
        public void wan()
        {
            System.out.println("正在玩儿游戏!" );
            
        }
        public int jiafa(int a,int b)
        {
            return a+b;
        }
    }
    class Bh<L>
    {
        private L l;
        Bh(L l)
        {
            this.l=l;    
        }
        public void lxmc()
        {
            
            System.out.println("类型是"+l.getClass().getName());
            Method []a=l.getClass().getDeclaredMethods();
            /*
             for(int i=0;i<a.length;i++)
             {
                 System.out.println("函数名为"+a[i].getName());
             }
             * 
             * */
        }
    }
  • 相关阅读:
    C语言I博客作业08
    作业7
    作业6
    作业5
    作业--4
    java基础学习--I/O流
    刷题记录--[CISCN2019 华北赛区 Day2 Web1]Hack World
    ADB测试Android真机
    sqli-labs通关笔记
    Tensorflow入门
  • 原文地址:https://www.cnblogs.com/SGRBOY/p/10632369.html
Copyright © 2011-2022 走看看