JAVA集合框架

来源:互联网 发布:小米关闭软件自动更新 编辑:程序博客网 时间:2024/05/17 04:04

java集合框架

1,list接口实现类:

list集合(可以出现重复的元素)
ArrayList:底层是数组结构,查询快,插入慢。
LinkedList:底层是链表结构,查询慢,插入快。

2,Set接口实现类:

Set集合(不能出现重复的元素)
HashSet:底层是HashMap:哈希表(散列表)
*在使用此类存储自定义的类的时候,需要在自定义类中重写,equals()和HashSet()方法。

TreeSet:底层是TreeMap:红黑树
*在使用此类存储自定义的类的时候,自定义类需要实现Comparable接口,并重写Comparable接口中的CompareTo()方法
例如:

//自定义类class Stu implements Comparable<Stu>{    private int age;    Stu(int age){        this.age = age;    }    public void setAge(int age){        this.age = age;    }    public int getAge(){        return age;    }    //重写compareTo()方法    @Override    public int compareTo(Stu o1){        if(o1.getAge()>this.getAge()){            return 1;        }else if(o1.getAge()<this.getAge()){            return -1;        }        return 0;    }    //重写toString()方法    @Override    public String toString() {        return "Stu{" +                "age=" + age +                '}';    }}//这样再把此类存储到TreeSet集合中时,就会调用重写的CompareTo()方法从而不会出现cannot be cast to java.lang.Comparable异常了

*或者在实例化TreeSet类的时候向其中传入自己实现的比较器类Comparator,并重写其中的Comparator()方法。
例如:

//自定义类class Stu{    private String name;    Stu(String name){        this.name = name;    }    public void setName(String name){        this.name = name;    }    public String getName(){        return name;    }    //重写toString()方法    @Override    public String toString() {        return "Stu{" +                "name='" + name + '\'' +                '}';    }}//比较器类class MyComparator implements Comparator<Stu>{        @Override        public int compare(Stu o1,Stu o2){            //因为String类中存在已经写好的compareTo()方法所以直接调用            return o1.getName().compareTo(o2.getName());        }}//在实例化构造TreeSet类的时候,将比较器实例化并传入其中,这样就不会出现cannot be cast to java.lang.Comparable异常TreeMap<Stu,Integer> m2 = new TreeMap<Stu,Integer>(new MyComparator());

3,Map接口实现类:

HashMap:底层是哈希表(散列表)【线程非同步】若想要使用线程同步的可以选择使用HashTable。
*在使用此类存储自定义的类的时候,需要在自定义类中重写,equals()和HashSet()方法。

TreeMap:底层是红黑树
*在使用此类存储自定义的类的时候,自定义类需要实现Comparable接口,并重写Comparable接口中的CompareTo()方法,或者在实例化TreeSet类的时候向其中传入自己实现的比较器类Comparator,并重写其中的Comparator()方法。

——————————未完待续——————————————————

原创粉丝点击