List,set,Map的区别
?List、set都是集成自Collection接口,Map不是
?List特点:元素有放入顺序,元素可重复,set特点元素无存放顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无法放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set的Object必须定义equals()方法,另外list支持for循环,也就是通过下班来遍历,也可以使用迭代器,但是set只能用迭代,因为他无序,无法通过下标来取得想要的值
3.set和List的区别
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置的改变
List:和数组类似,list可以动态增长,查询元素效率高,插入删除元素效率低,因为不会引起其他元素位置改变
4.Map适合存储键值对的数据
5.线程安全集合类与非线程安全集合类:
?LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;
?HashMap是非线程安全的,HashTable是线程安全的;
?StringBuilder是非线程安全的,StringBuffer是线程安全的
6.ArrayList和LinkedList的区别
?ArrayList是数组队列,相当于动态数组;后者为双向链表结果,也可以当作堆栈、队列、双端队列
?当随机访问List时候(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找
?当增删操作的时候(remove和add)LinkedList比ArrayList效率高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,进行数据的移动
?ArrayList自由性比较低,因为他需要手动的设置固定大小的容量,但是它的使用比较方便,只要创建,然后添加数据,通过调用下表进行使用;而LinkedList自由度比价高,能够动态的随着数据量的变化而变化,但是他不便于使用,
?ArrayList主要空间开销在于需要在list列表预留一定空间;而LinkedList的主要空间开销在于需要存储结点信息及节点指针信息
hashMap的数据结构是数组+链表+红黑树
TreeMap的数组结果是红黑树
|