List集合,Set集合,Map接口(HashMap 和 LinkedHashMap和TreeMap的区别)

List集合有序存取、有索引、可重复;
常用方法:add()、get()、remove()、set()
··ArrayList类:允许Null值; 允许重复; 底层数据结构是数组,查询快,增删慢; 线程不安全,效率高;
··Vector类:与ArrayList类似,只不过Vector线程安全,ArrayList线程不安全。
··LinkedList类:底层数据结构是链表,查询慢,增删快; 允许null值; 允许元素重复; 线程不安全,效率高。

Set集合无序存取(元素存与取顺序可能不同),不可重复,允许一个null值(TreeSet不允许null值)。
··HashSet类(底层结构是哈希表结构),不保证set的迭代顺序(存取的顺序)。保证元素唯一性的方式依赖于:hashCode()与equals()方法
~~LinkedHashSet(底层结构是 哈希表结构 + 链表结构),是HashSet的子类,有序存取,并且唯一(哈希表)。
··TreeSet类:不允许存储null 值(会报 NullPointerException 异常)
线程不安全,效率高。
01-创建无参的 TreeSet()时,对元素进行【自然排序】;元素实现Comparable接口,重写元素的 int compareTo() 方法。
02-创建有参的 TreeSet(Comparator<? super E> comparator)时,对元素进行【指定比较器】排序:
独立实现Comparator接口,重写 int compare(元素1,元素2) 方法。
具体取决于使用的构造方法是 【有参还是无参】。

Map接口:键不能重复,每个键最多映射一个值,集合元素都是成对出现。
HashMap集合(底层采用哈希表结构),是Map的子集合,通过重写hashCode() 与 equals()方法来保证键的唯一。不能保证元素存与取的顺序完全一致
1,键是哈希表结构,见识唯一的
2,允许Null值,允许Null键
3,线程不安全,效率高
4,存取无序
··LinkedHashMap集合(底层采用哈希表+链表结构),是HashMap的子集合,通过重写hashCode() 与 equals()方法来保证键的唯一。
——TreeMap集合 键是红黑树结构,可以保证键的排序(自然排序)和唯一性,不能重复,key不能为null。
Map是双列的,collection是单列的.
Map的键是唯一的,Collection的子体系Set是唯一的
Map集合的数据结构值针对键有效,跟值无关,Collection集合的数据结构是针对元素有效
*SetkeySet()方法:返回map中所有键的集合,一Set集合的形式(Set集合不重复)
*Collection value()方法: 返回所有的值得集合,以Collection集合的形式存在,可重复
*Set<Map.Entry>

HashMap 和 LinkedHashMap和TreeMap有什么区别?
相同点:
HashMap,LinkedHashMap,TreeMap 都属于集合 Map接口的子类。都是键值对集合

不同点:
HashMap 键是哈希表结构,可以保证键的唯一性
key能null,key能null

LinkedHashMap 是HashMap的子类,内部依赖哈希表和链接列表实现。
由hash保证 键的唯一性
由linkedlist保证 有序性(存取顺序一致)
key能null,value也能为null

TreeMap类 键是红黑树结构,可以保证键的排序(自然排序)和唯一性
按自然排序,并且不能重复。
key 不能为null,value 可以为null

猜你喜欢

转载自blog.csdn.net/weixin_39530338/article/details/82989082