Java集合源码分析01----集合框架

在java.util包下面提供了一些集合类,又称为容器。相比长度固定,存放基本数据的数组,集合的长度是可变的,并且存放的是对象的引用。Java集合框架学习大致可以分为五个部分:List列表,Set集合,Map映射,迭代器(Iterator,Enumeration),工具类(Arrays,Collections)

 

《Java集合源码分析01----集合框架》

Java集合类主要分为两个部分:Collection和Map.

1.Collection接口是Collection层次结构中的根接口,包含了对元素操作的基本方法和属性,它主要包含了两部分:List集合和Set集合。

1)List集合包含了List接口以及List接口的所有实现类,List集合中的元素可以重复并且是有序的。常见的实现类包含ArrayList,LinkedList,两个类是线程不安全的;此外还有线程安全的Vector和继承于Vector的Stack(先进后出的容器)。

2)Set集合包含Set接口和Set接口的所有实现类,Set集合中的元素是不能重复的。常见的实现类包含HashSet,TreeSet,LinkedHashSet。其中TreeSet实现了SortedSet接口,可以对里面的元素进行排序(集合中存储的元素要实现接口Comparable接口,实现compareTo()方法),它实际上是通过HashMap实现的。HashSet实际通过HashMap实现的。LinkedHashSet不是同步的,里面元素是有序的。

3)此外Queue接口也继承于Collection接口,队列通常是以FIFO(先进先出)方式排列各个元素,并且只允许在队列的一端插入元素,在另外一端移除元素。常见实现类有LinkedList和PriorityQueue。

抽象类AbstractCollection,AbstractList,AbstractSet分别继承了Collection,List,Set,这是一种适配器模式。这些抽象类实现了接口,重写了接口中的所有的方法。所有只要继承了这些抽象类,添加自己的方法即可,不需要重写接口中的所有方法。

2.Map集合没有继承Collection,提供了key到value的映射。Map集合中不能存在重复的key,每个key只能映射一个对应的value,所以根据key可以查找对应的value值。AbstractMap抽象类实现了Map接口中大部分方法,其中HashMap,TreeMap,WeakHashMap都是继承了AbstractMap类,常见的LinkedHashMap和HashTable是直接实现了Map接口。

3.Iterator迭代器是遍历集合的工具,但无法用于Map集合,用于Collection集合的遍历。因为Collection接口实现了Iterable接口,Collection接口的实现类都重写了iterator()方法,其返回了一个实现Iterator接口的对象,使用这个迭代器对象可以依次访问集合中元素,ListIterator用于各类List集合的遍历。Enumeration的功能类似于Iterator,用于遍历集合,但Enumeration接口的功能比Iterator少,只能在Hashtable,Vector,Stack中使用。

4.Arrays和Collections两个工具类,分别包含了操作数组和集合的各类方法。例如经常使用的Arrays.asList()方法可接受一个数组或者是一个用逗号分隔的元素列表(可变参数),返回一个List对象。Collections.addAll()方法可以接受一个Collection对象,数组以及一个用逗号分隔的列表,作用是将元素添加到Collection中。

    原文作者:java集合源码分析
    原文地址: https://blog.csdn.net/lili13897741554/article/details/83183398
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞