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.根据键值对对象查找相应的键和值
转载请注明原文地址:https://blackberry.8miu.com/read-9236.html