1.特点:
Collection:(单列集合)
List:(有序,元素不唯一)
ArrayList:
1.线程不安全,效率高
2.底层实现可变数组,查询快,增删慢
Vector:
1.线程安全,效率低
2.底层实现可变数组,查询快,增删慢
LinkedList:
1.线程不安全,效率高
2.底层实现是链表,查询慢,增删快
Set:(元素唯一)
HashSet:(无序)
1.底层实现是哈希表,判断依赖hashCode方法和equals方法,执行顺序:
判断hashCode()是否相同
是:判断equals()是否为true
是true:说明元素重复,不进行添加
否false:添加元素到集合
否:添加元素到集合
LinkedHashSet:(有序)
1.底层实现是链表和哈希表,链表保证有序,哈希表保证唯一
TreeSet:(可自行排序,默认按照自然排序)
1.底层实现是红黑树
2.判定元素相同的标准是所存元素的compareTo返回是否为0
3.排序两种方式:
a.自然排序(存储元素实现Comparable接口)
b.比较器排序(初始化时候接收一个Comparator接口的实现类的实例)
Map:(双列集合)
A:Map集合的数据结构仅仅针对键有效,与值无关。
B:存储的是键值对形式的元素,键唯一,值可重复。
HashMap:
1.底层实现是哈希表,判断依赖hashCode方法和equals方法,执行顺序:
判断hashCode()是否相同
是:判断equals()是否为true
是true:说明元素重复,不进行添加
否false:添加元素到集合
否:添加元素到集合
LinkedHashMap:
1.底层实现是链表和哈希表,链表保证有序,哈希表保证唯一
Hashtable:
1.底层实现是哈希表,判断依赖hashCode方法和equals方法,执行顺序:
判断hashCode()是否相同
是:判断equals()是否为true
是true:说明元素重复,不进行添加
否false:添加元素到集合
否:添加元素到集合
TreeMap:
1.底层实现是红黑树
2.判定元素相同的标准是所存元素的compareTo返回是否为0
3.排序两种方式:
a.自然排序(存储元素实现Comparable接口)
b.比较器排序(初始化时候接收一个Comparator接口的实现类的实例)
2.选择:
看需求:是否是键值对类型的数据:
是:Map:
键是否需要排序:
是:TreeMap
否:HashMap
不清楚的使用HashMap
否:Collection:
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不清的使用HashSet
否:List
是否需要线程安全;
是:Vector
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList
不清楚就使用ArrayList
3.使用:
Collection:
常用方法:
add()
remove()
contains()
iterator()
size()
clear()
遍历:
1.增强for(forEach)
2.迭代器
子类:
List:
常用方法:
get()
遍历:
普通for循环
Set:
Map:
常用方法:
put()
remove()
containsKey(),containsValue()
keySet()
get()
values()
entrySet()
size()
遍历:
1.根据键找值
2.根据键值对对象查找相应的键和值