天天看点

集合学习笔记

   集合框架总结:

1 Collection接口 

2 Set接口

2.1 HashSet具体类(散列集)

  散列集是没有重复元素的元素集合。散列表用链表数组实现,每个列表称为桶。可以用add方法添加元素。contains方法用来快速查看是否某个元素已经出现在集中,只在桶内查找元素,不必查看集合中所有元素。

  散列表迭代器将依次访问所有的桶。由于散列将元素分散在表的各个位置,所以访问顺序是随机的。只有不关心集合中的元素顺序时才应该使用HashSet。

  HashSetTest.java

集合学习笔记
集合学习笔记

HashSetTest.java

集合学习笔记
集合学习笔记

View Code

2.2 TreeSet具体类(树集)

  与散列集十分类似。树集是一个有序的集合。可以以任意顺序将元素插入到集合中。在对集合进行遍历时,每个值将自动的按照排序后的顺序呈现(这点与散列集相反)。如:

 

  但是TreeSet如何知道希望元素怎样排序呢,第一种方法,树集假定插入的元素实现了Comparable接口。这个接口定义了一个方法。

  第二种方法,通过将比较器Comparator对象传递给TreeSet构造器来告诉树集使用不同的比较方法。

3 List接口

3.1 ArrayList具体类(数组列表)

  ArrayList是List的子类,它和HashSet相反,允许存放重复元素,因此有序。集合元素被访问的顺序取决于集合的类型。如果对ArrayList进行访问,迭代器从索引0开始,每迭代一次索引值加1。然而,如果访问HashSet中的元素,每个元素会按照随机次序出现。

  ArrayListSetTest.java

集合学习笔记
集合学习笔记

ArrayListSetTest.java

集合学习笔记
集合学习笔记

3.2 LinkedLis具体类(链表)

  LinkedList是一种可以在任何位置进行高效的插入和删除操作的有序序列。

  LinkedListTest.java

集合学习笔记
集合学习笔记

LinkedListTest.java

集合学习笔记
集合学习笔记

3.3 Vector具体类

  Vector: 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不能超越Array。所以在可能情况下,我们要多运用Array。另外很重要的一点是Vector"sychrovized" 的,这个是Vector和ArroyList的唯一区别。

  它实现了一个类似数组一样的表,自动增加容量来容纳你所需要的元素。使用下表存储和检索对象就像在一个标准的数组中一样。你也可以用一个迭代器从一个Vector中检索对象。Vector是唯一的同步容器类,当两个或多个线程同时访问时,性能也是良好的。

3.4 Stack具体类

  这个类是从Vector派生而来,并且增加了方法实现栈操作,一种后进先出的存储结构。

4 Map接口

4.1 HashMap具体类(散列映射)

4.2 LinkedHashMap具体类(链接映射表)

  连接散列映射表与散列映射表的区别在于,链接散列映射表将用访问顺序,而不是用插入顺序,对映射表条目进行迭代。

  各种具体类的比较:

集合学习笔记

  集合类框架图:

集合学习笔记

当神已无能为力,那便是魔渡众生

继续阅读