List和Set以及map的区别(图解)

list和set的区别:

如下图所示:list中可以有重复元素,set中不可以。

 

 

List和Set以及map的区别(图解)

具体解释:

1.list:ArrayList和LinkedList是我们常用的数据结构,它们都是线性表,ArrayList是顺序存储的线性表,LinkedList是链式存储的线性表。

LinkedList:

LinkedList是一个双向链表, 当数据量很大或者操作很频繁的情况下,添加和删除元素时具有比ArrayList更好的性能。但在元素的查询和修改方面要弱于ArrayList。

List和Set以及map的区别(图解)

ArrayList:顺序表如下。

1 2 3 4  

2.set:HashSet和TreeSet的区别两者主要在实现方式、数据是否有序以及是否可以放入null值等三方面存在区别。

一、实现方式

HashSet:HashSet是哈希表实现的。

TreeSet:TreeSet是二叉树实现的。

二、数据是否有序

HashSet:HashSet中的数据是无序的。

TreeSet:Treeset中的数据是自动排好序的。

三、是否可以放入null值

HashSet:可以放入null,但只能放入一个null。 

TreeSet:不允许放入null值。

 

LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双向链表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序(同LinkedHashMap)

2.map

 

List和Set以及map的区别(图解)

 

区别:

     HashMap不是线程安全的,HashTable是线程安全。

     HashMap允许空(null)的键和值(key),HashTable则不允许。

     HashMap性能优于Hashtable。

 

Map

1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.

2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.

3.HashMap允许键或值为空,而HashTable不允许键或值为空.
 

HashMap、Treemap两种常规Map性能

HashMap:适用于在Map中插入、删除和定位元素。

Treemap:适用于按自然顺序或自定义顺序遍历键(key)。

总结:HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。