List,Map和Set三者的特点
List , Set, Map都是接口,List和Set继承至Collection接口,Map为独立接口
List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;
1.List
特点:List中存储的数据是有顺序的,并且值允许重复;
方法:
1.add(int index, E element): 将指定的元素,添加到该集合中的指定位置上
2.get(int index):返回集合中指定位置的元素
3.remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素
4.set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素
ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
2.Map
特点:1.Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的。
2.Map和Collection没有继承关系。
方法:
1.V put (K key,V value) 向Map集合中添加键值对
2.V get(Object key) 通过key获取value
3.void clear() 清空Map集合
4.boolean containsKey(Object key) 判断Map中是否包含某个key
5.boolean containsValue(Object value) 判断Map中是否包含某个Value
6.boolean isEmpty() 判断Map集合中元素的个数是否为0
7.Set<K> keyset() 获取Map集合中所有的key(所有的键是一个set集合)
8.V remove(Object key) 通过key删除键值对
9. int size() 获取Map集合中键值对的个数
10.Collection<V> values() 获取Map集合中所有的value,返回一个Collection
11. Set<Map.Entry<K,V>> entry() 将Map集合转换为Set集合
四个实现类
1. HashMap:基于 hash 表的 Map 接口实现,非线程安全,高效
2 .HashTable:线程安全,低效,不支持 null 值和 null 键
3 .LinkedHashMap:是 HashMap 的一个子类,保存了记录的插入顺序
4 .SortMap 接口:TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序
3.Set
特点:Set中存储的数据是无顺序的,并且不允许重复。
HashSet:用hashCode()和equals()来保证元素唯一性
LinkesHashSet:继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap
TreeSet:1. 用自然排序、比较器排序保证元素排序
2.根据比较的返回值是否是0来保证元素唯一性