Java学习笔记之容器类
在Java的诸多类中,容器类是一个使用频率极高的类,尤其是其中的ArrayList类和HashMap类。Collection类有包括List,Map还有Set,各自持有自己的特性,他们之间有一点共性就是,由于Collection是Iterable接口的子接口,所以他们之间都有迭代器,使用的方法相同,先由Collection类的对象通过iterator()方法产生一个迭代器,来遍历集合对象中的所有数据。
此外,从J2SE 1.5开始,集合对象用泛型进行了改写,使用<>来标注集合对象中存储的对象的类型,避免了从集合中取出变量还要进行强制类型转化的繁琐。
一、List(ArrayList和LinkedList)
这两个在之前的笔记中已经写过了,这里就不赘述了
二、Set(HashSet,TreeSet和EnumSet)
List中的对象是允许重复的,但是Set中的对象都是唯一的,在定义类时,最好从新定义一下equals()和hashCode()方法,因为在比较两个HashSet容器中的对象是否相同的时候,先比较hashCode()然后再利用equals()方法,HashSet容器会对其中的对象进行排序,与被加入的顺序不同。如果使用的是HashSet的子类LinkedHashSet,就可以按照加入的顺序进行迭代。
TreeSet使用红黑树的结构来对加入的对象进行排序。如果要对对象自定义排序的规则,就要定义一个实现Java.util.Comparator接口的对象,并且实现方法compare().
EnumSet是针对枚举对象的数据集
三、Map(HashMap,TreeMap,EnumMap)
类比Set也有三类