集合Collection解析(一)

数组和集合的区别

数组和集合的区别:

  • ⻓度的区别
    • 数组的⻓度固定
    • 集合的⻓度可变
  • 元素的数据类型
    • 数组可以存储基本数据类型,也可以存储引⽤类型
    • 集合只能存储引⽤类型(存储简单的int,它会⾃动装箱成Integer)

Collection体系结构

image.png

思维导图

image.png
collectionmethod.png
image.png

二、容器中的设计模式

迭代器模式

image.png
Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。
从 JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
for (String item : list) {
    System.out.println(item);
}

适配器模式

java.util.Arrays#asList() 可以把数组类型转换为 List 类型。

@SafeVarargs
public static <T> List<T> asList(T... a)

应该注意的是 asList() 的参数为泛型的变长参数,不能使用基本类型数组作为参数,只能使用相应的包装类型数组。

Integer[] arr = {1, 2, 3};
List list = Arrays.asList(arr);

也可以使用以下方式调用 asList():

List list = Arrays.asList(1, 2, 3);
list介绍

下面有ArrayList,LinkedList,Vector(已过时)

List

集合的的最大目的就是为了存取;List集合的特点就是存取有序,可以存储重复的元素,可以用下标进行元素的操作。

ArrayList(**@since   **1.2

ArrayList: 底层是使用数组实现,所以查询速度快,增删速度慢
image.png

LinkedList(**@since   **1.2

LinkedList:是基于链表结构实现的,所以查询速度慢,增删速度快,提供了特殊的方法,对头尾的元素操作(进行增删查)。使用LinkedList来实现栈和队列;栈是先进后出,而队列是先进先出。
image.png

Set:

Set集合的特点:元素不重复,存取无序,无下标 Set集合下面有:HashSet,LinkedHashSet,TreeSet

LinkedHashSet(**@since   **1.4

是基于链表和哈希表共同实现的,所以具有存取有序,元素唯一。
image.png

TreeSet(**@since   **1.2

**特点:**存取无序,元素唯一,可以进行排序(排序是在添加的时候进行排序)。
TreeSet是基于红黑树实现。
image.png

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议