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就会报空指针;