List、Set、Map的区别?

  • List 是一个有序集合,里面可以存储重复元素
  • Set 是一个不能存储相同元素的集合
  • Map 是一个通过键值对的方式存储元素的,键不能重复

List、Set、Map的区别?_第1张图片

Java 容器分为Collection 和Map 两大类,Collection 集合的子接口有Set、List、Queue 三种子接口。其中,前两种Set、List比较常用,Map 接口不是Collection 的子接口

  • Collection 集合主要有List Set 两大接口
    • List : 一个有序(元素存入集合的顺序和取出顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用实现类ArrayList、LinkedList 和 Vector.
    • Set : 一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,允许存入一个null元素,必须保证元素唯一性。常用实现类HashSet、LinkedHashSet 以及TreeSet.
  • Map 是一个键值对集合,存储键、值和之间的映射Key无序,唯一value 不要求有序,允许重复。Map 没有继承Collection 接口,从Map 集合中检索元素时,只要键对象,就会返回对应的值对象。常用实现类HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap

如何对List 中的一个数据进行排序?

使用Collections.sort()

List 和 Map 的区别?

List : 是存储单列数据的集合,数据有顺序,允许重复;

Map : 是存储键和值的双列数据的集合,无顺序,其键不能重复,值可以重复。

总结:

  1. List 有重复值,Map 没有重复 key,但可以有重复值
  2. List 有序,Map 不一定有序
  3. List 只能存单列值,Map 可以存双列值

List、Map默认大小是多少?

Collection单列集合 Map双列集合
List 元素是有序的、可重复 Set(集)元素无序的、不重复
ArrayList Vector HashSet HashMap
默认初始容量 10 10 16 16
线程 不安全 安全 不安全
查询速度 存取速度快
底层数据结构 数组结构 数组结构 是一个HashMap (保存数据),实现Set 接口
加载因子为1:即当 元素个数 超过 容量长度时,进行扩容 加载因子为0.75:即当元素个数超过容量长度的0.75 倍时,进行扩容
扩容增量

原容量的0.5倍+1(容量10,扩容后为16)

原容量的1倍(容量10,扩容后为20)

原容量的1倍(如HashSet 的容量16,扩容后为32)

原容量的1倍

List、Set、Map三个接口存取元素时,各有什么特点?

List 以特定索引来存取元素,可以有重复元素

Set 不能存放重复元素(用对象的equals()方法区分元素是否重复)。

Map 保存键值对(key-valuepair)映射,映射关系可以是一对一多对一

Set 和 Map 容器都有基于哈希存储和排序树的两种实现版本,

基于哈希存储的版本理论存取时间复杂度为O(1),

而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。

List、Set、Map是否继承自Collection接口?

List、SetMap不是

Map 是键值对映射容器,与List 和 Set 有明显区别,

Set 存储的零散元素不允许有重复元素(数学中集合也是如此),

List 是线性结构容器,适用于按数值索引访问元素的情形。

你可能感兴趣的:(Java基础面试题,java,开发语言)