集合类

来源:互联网 发布:淘宝宝贝重复铺货 编辑:程序博客网 时间:2024/06/05 19:40

Java集合类 图解:


--------------------------------------------------------------------------------------------------------------------------------



上面的图中,实线边框的是实现类,比如ArrayList、LinkedList、HashMap等,这线边框的是抽象类,比如AbstractCollection、AbstractList、AbstractMap等,而点线边框的是接口,比如Collection、Iterator、List等。


发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含 hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是 add(),previous(),hasPrevious()。也就是说如果是先Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被 遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是 LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个 元素,比如ArrayList。


还有一个特点就是抽象类的使用。如果要自己实现一个集合类,去实现那些抽象的接口会非常麻烦,工作量很大。这个时候就可以使用抽象类,这些抽象 类中给我们提供了许多现成的实现,我们只需要根据自己的需求重写一些方法或者添加一些方法就可以实现自己需要的集合类,工作量大大降低。


下面是比较:


  是否有序是否允许元素重复Collection否是List是是SetAbstractSet否否 HashSet TreeSet是(用二叉排序树)MapAbstractMap否使用key-value来映射和存储数据,key必须唯一,value可以重复 HashMap TreeMap是(用二叉排序树)