【深入学习java集合框架】总篇章

       Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。很多时候拆包装和解包装能够自动完成。

       Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。Java集合框架大致可以分为:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。【深入学习java集合框架】总篇章_第1张图片


--Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作。

    ----List接口通常表示一个列表(数组、队列、链表、栈等),元素可重复,常用实现类为ArrayList和LinkedList,还有不常用Vector。LinkedList实现了Queue接口,可作为队列使用。

    ----Set接口通常表示一个集合,元素不允许重复(通过hashcode和equals函数保证),常用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现,TreeSet是通过Map中的TreeMap实现。TreeSet还实现了SortedSet接口,因此是有序的集合(集合中的元素要实现Comparable接口,并重写Compartor函数才行)。

--Map是一个映射接口,其中的每个元素都是一个key-value键值对,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。

       抽象类AbstractCollection、AbstractList和AbstractSet分别实现了Collection、List和Set接口,Java集合框架用适配器设计模式,用抽象类去实现接口,在抽象类中实现接口中的若干或全部方法,这样下面的一些类只需直接继承该抽象类,并实现自己需要的方法即可,而不用实现接口中的全部抽象方法。

       Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。而Enumeration则是JDK1.0时引入的,作用与Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。

       Arrays和Collections是用来操作数组、集合的两个工具类,例如在ArrayList和Vector中大量调用了Arrays.Copyof()方法,而Collections中有很多静态方法可以返回各集合类的synchronized版本,即线程安全的版本,如:Collections.synchronizedList。如果要用线程安全的结合类,首选Concurrent并发包下的对应的集合类。


你可能感兴趣的:(java,迭代器,集合类)