Java集合框架--Collection

Java Collection class

Collection是最基本的集合接口,一个Collection代表一组Object。Java SDK不提供直接继承自Collection的类,提供的类都是继承自Collection的子接口(如List和Set)

语法

public interface Collection<E> extends Iterable<E>{}

Collection是一个接口,是高度抽象出来的集合,他包含了集合的基本操作:添加、删除、查找、清空、遍历、大小等。

iterator接口

无论Collection的实际类型是什么,都支持一个iterator()方法,迭代每一个元素。
####Iterator方法

boolean hasNext()                 //如果仍有元素可以迭代,则返回true;

E next()                          //返回迭代的下一个元素;

void remove()                     //从迭代器指向的集合中移除迭代器返回的最后一个元素。

Iterator实例

Iterator it = collection.iterator();          //获得一个迭代子
while( it.hasNext() ) {
        Object obj = it.next();               //得到下一个元素
}

继承体系

Collection
    |—List 有序可重复,可有null值
        |——ArrayList 非线程安全,底层为数组,查询快,增删慢,效率高
        |——LinkedList 非线程安全,底层为链表,查询慢,增删快,效率高
        |——Vector 线程安全,底层为数组,查询快,增删慢,效率低。
    |—Set 元素不可重复的collection
        |——HashSet 底层由HashMap实现,通过对象的hashCode方法与equals方法来确保插入元素的唯一性,无序存储(存储顺序和取出顺序不一致)
            |——LinkedHashSet 底层由哈希表和链表组成。哈希表保证元素的唯一性,链表保证元素的有序性(存储和取出顺序一致)
    |——TreeSet 基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序,根据创建set时提供的Comparator进行排序,元素唯一
Collection接口继承关系

总结

  1. List是一个有序的队列,每一个元素都有它的索引,第一个元素的索引值是0。List的实现类有LinkedList、ArrayList、Vector和Stack;
  2. Vector类似于ArrayList,但Vector是线程安全的;
  3. Stack继承自Vector,实现一个后进先出的堆栈;
  4. set是一个不允许有重复元素的集合;
  5. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

猜你喜欢

转载自www.cnblogs.com/willwuss/p/12238938.html