Map List Set的区别

Map List Map的主要区别如下:

  set List 是实现了Collection接口的子接口;Map本身就是一个接口;

  list数据存放时有序的,允许有重复元素;set数据存放时无序的,不允许有重复数据;map是以键值对的形式存放,存放是无序的,key值不允许有重复的,value值可以有重复的;

  list里面可以有任意的null值;set数据只允许有一个null值,如果多个数据都是null,那么只存在一个;map的key值只能有一个null值,value值可以有任意数量的null值;

实现类(只说几个平时在用的)

  list:ArrayList,LinkedList

  set:HashSet,TreeSet

  Map:HashMap,TreeMap

ArrayList和LinkedList的区别

  ArrayList底层为数组结构,数据存在内存中的地址是连续的,所以查询效率高,直接用数组下标就可以得到数据,而插入,删除要移动操作位置前后的元素。

  LinkedList底层为链表结构,数据存在内存中的地址不是连续的,查询的时候需要通过指针一个一个去查找,效率没有ArrayList高,但是插入,删除操作的时候,只需要改变指针的指向即可,不需要移动操作位置前后元素。

 ArrayList费空间的地方就是真实的数组长度要大于实际存储的元素的长度,为了方便添加数据;而LinkedList费空间的地方是一个位置要存本身的数据还有存指向前后的指针;

HashMap和HashTable的区别

  HashMap不是线程安全的,HashTable是线程安全的,内部的方法都是用synchronized修饰的,所以HashMap效率要比HashTable高;

  HashMap允许键值为null,HashTable不允许,只要有为null就会报空指针;

 

posted @ 2019-07-11 12:42  王小鑫  阅读(2808)  评论(0编辑  收藏  举报