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来保证元素唯一性