目录
一.List:
1.List基本介绍:
- List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复。
- List集合中的每个元素都有其对应的顺序索引,即支持索引。
- List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
2.List接口方法:
3.List的三种遍历方式:
//通过静态方法,对Book对象按照价格升序进行排序
public static void main(String[] args) {
public static void sort(List list){
for (int i =0;i<list.size()-1;i++){
for (int j =0;j<list.size()-1-i;j++){
Book book1 = (Book)list.get(j);
Book book2 = (Book)list.get(j+1);
if(book1.getPrice()>book2.getPrice()){
list.set(j,book2);//set方法实现交换
list.set(j+1,book2);
}
}
}
}
}
4.ArrayList:
(1)ArrayLis的基本介绍:
- ArrayList是由数组来实现数据存储的,ArrayList可以加入多个null。
- ArrayList基本等同于Vector,除了ArrayList是线程不安全的。
(2)ArrayList底层结构和源码分析:
5.Vector:
(1)Vector基本介绍:
- Vector底层是一个对象数组,Vector是线程同步的,即线程安全。
(2)Vector底层结构与ArrayList的比较:
6.LinkedList:
(1)LinkedList的基本介绍:
- LinkedList底层实现了双向链表和双端队列。
- 可以添加任何元素(元素可以重复),包括null。
- 线程不安全,没有实现同步。
(2)LinkedList的底层操作机制:
7.ArrayList和LinkedList的比较:
二.set:
1.基本介绍:
set接口是无序的(添加和取出的顺序不一致),没有索引。不允许重复元素,所以最多包含一个null。
2.遍历Set:
//迭代器
Iterator iterator = set.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
System.out.println(obj);
}
//增强for
for (Object obj:set){
System.out.println(obj);
}
set.remove(null);
3.HashSet:
(1)HashSet全面说明:
- HashSet实现了Set接口,实际上是HashMap(数组+链表+红黑树)。
- 可以存放null,但是只能有一个null。(不能有重复元素、对象)
- HashSet不保证元素是有序的,取决于Hash后,再确定索引的结果。
(2)HashSet扩容机制:
4.LinkedHashSet:
(1)基本介绍:
- LinkedHashSet是HashSet的子类,LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表。
- LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的(有序的)。
- LinkedHashSet不允许添加重复元素。