List、Set和Map三者的区别
- 大白话回答
一、排序
- List:有序、可重复。
- Set:无序、不可重复的集合。重复元素会覆盖掉。
- Map:键值对,键唯一、值不唯一。Map 集合中存储的是键值对,键不能重复,值可以重复。
二、线程
- List:通过索引查找快,增删速度慢 。
- Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
- Map:根据键得到值,对 map 集合遍历时先得到键的 set 集合,对 set 集合进行遍历,得到相应的值。三.接口
三、插入元素的时间复杂度
- List:在列表中插入元素的时间复杂度是O(n),其中n是列表中元素的数量。
- Set:在集合中插入元素的时间复杂度是O(n),其中n是集合中元素的数量。
- Map:在Map中插入元素的时间复杂度是O(1)。
- 详细描述
举例来说,List 可以用来存储一组有序的元素,比如一张歌曲列表;Set 可以用来去重,比如统计一篇文章中出现过的单词;Map 可以用来存储键值对,比如存储学生的姓名和对应的学号。
另外,Java 中还有一种有序的集合类型叫做 ArrayList,它也实现了 List 接口,但相比于普通的 List,ArrayList 的查询效率更高,而修改和删除操作的效率较低,因为需要移动其他元素的位置。