集合框架

集合框架

Java 集合框架 #

JXUL1s.png

Java集合框架结构简图

  1. 未列出枚举集(EnumSet/EnumMap
  2. 未列出IdentityHashMap
  3. 未列出java.util.concurrent包下的实现

上图列出了集合框架的常见实现,Java集合框架系列文章介绍了图中列出的大部分内容。

主要讨论三大接口:

  1. List

    List是有序集合,或称之为序列。List的实现可以准确地控制插入元素的位置,也可以通过元素的索引(index)访问之,还可以在集合中搜索元素

    Set不同,List允许元素重复出现,甚至允许多个null元素出现

    List定义了4个由索引执行的操作

    E get(int index);

    E set(int index, E element);

    void add(int index, E element);

    E remove(int index);

    ArrayList由于实现了RandomAccess接口,其在使用索引随机访问时性能不会受影响,但是LinkedList执行索引操作的耗时是与集合大小正相关的。

    因此,在不清楚List的实现类型的时候1,通过迭代器遍历集合中的元素进行操作比直接使用索引更可取

    List提供了一个独有的迭代器ListIterator,其提供了插入/替换元素的操作,并且支持双向迭代

    关于List,分2文讨论:

  2. Set

    Set不含重复元素的集,严格来讲,Set不允许当e1.equals(e2)为真时, e1e2 同时出现在集合中。Set最多允许一个null元素。

    可变对象置入Set时需要特别小心,当对象的改动影响到了元素之间的equals()比较的结果,那么Set的行为就变得不确定了。因此,不能将Set本身作为Set的元素

    集的部分,主要讨论了HashSetTreeSet

  3. Map

    Map即映射,即键-值对,键不允许重复,并且一个键最多映射一个值。Map不在Java集合框架的范畴,但是其由集合框架的内容实现。自然也在集合框架的讨论之内。

    映射提供3种集合视图

    • 键集 (Set实现)
    • 值集 (Collection实现)
    • Map.Entry集(Set实现)

    关于Map的内容,主要讨论了3个:

有关线程安全的集合将在并发编程部分讨论。


  1. 这种情况在获取集合视图(Collection view)时经常出现。 ↩︎