集合Collection解析(一)
数组和集合的区别
数组和集合的区别:
- ⻓度的区别
- 数组的⻓度固定
- 集合的⻓度可变
- 元素的数据类型
- 数组可以存储基本数据类型,也可以存储引⽤类型
- 集合只能存储引⽤类型(存储简单的int,它会⾃动装箱成Integer)
Collection体系结构
思维导图
二、容器中的设计模式
迭代器模式
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: 底层是使用数组实现,所以查询速度快,增删速度慢
LinkedList(**@since **1.2)
LinkedList:是基于链表结构实现的,所以查询速度慢,增删速度快,提供了特殊的方法,对头尾的元素操作(进行增删查)。使用LinkedList来实现栈和队列;栈是先进后出,而队列是先进先出。
Set:
Set集合的特点:元素不重复,存取无序,无下标 Set集合下面有:HashSet,LinkedHashSet,TreeSet
LinkedHashSet(**@since **1.4)
是基于链表和哈希表共同实现的,所以具有存取有序,元素唯一。
TreeSet(**@since **1.2)
**特点:**存取无序,元素唯一,可以进行排序(排序是在添加的时候进行排序)。
TreeSet是基于红黑树实现。
Q.E.D.
Comments | 1 条评论