List和Map、 Set的区别
list和set都出存储单列数据集合,map存储数据采用的是键值对的形式。
list存储数据是有序的并且允许重复。
set存储数据是无序的并且不允许重复。元素的位置在集合中的位置是由hashcode决定的,位置是固定的,但是它的hashcode不是人为能够控制的,所以它还是等于是无序的。
map集合在存储数据是没有顺序的,其键是不能重复的,其值可以重复。
三大集合分别对应的实现类
list接口有三大实现类:
1.LinkedList:它是基于链表实现的,链表内存是散乱的,在记录元素记录本身内容的同时还记录着上一个和下一个元素内容的地址,所以链表增删快,查询慢。
2.ArrayList:它是基于数组实现的,非线程安全,效率高,查询快,增删慢,因为数组在内存中是连续存储的。
3.vetor:它是基于数组实现的,线程安全,效率低。
Map接口三大实现类:
1.HashMap:它是基于Hash表的map接口实现的,非线程安全,效率高,支持null值和null键。
2.HashTable:线程安全,效率低,不支持null值null键。
3.LinkedHashMap:是HashMap的一个子类,保持的记录的插入顺序(SortMap接口:treemap,它保存的记录顺序是根据键排序,默认升序)。
Set接口两大实现类:
1.HashSet:底层是hashMap实现,不允许集合中存在重复值,使用该方法时需要重写equals()和hashCode()方法。
2.LinkedHashSet:集成于HashSet同时又基于LinkedHashMap实现的,底层使用的是LinkedHashMap。
*以上内容仅个人总结希望能够帮到需要的人,如果有什么错误理解还请各位海涵,能够联系我进行文章内容修改*