集合思维导图:
集合比较方面问题:
ArrayList和LinkedList的区别:
1、结构:
ArrayList是数组结构
LinkedList是链表结构
2、优缺点
ArrayList:
**优点:查询速度快
**缺点:增删改的速度慢
LinkedList:
**优点:查询速度慢,不适合做查询
**缺点:增删改的速度快
Array和ArrayList的区别:
1、存储的数据类型
Array是数组
ArrayList是集合
2、长度
Array是固定数组,长度不可变
ArrayList是动态数组被称为“集合”,长度可变
3、ArrayList是Array的复杂版本
HashSet、TreeSet、LinkedHashSet的区别:
1、需要速度快的集合,用HashSet
2、需要集合排序功能,用TerrSet
3、需要插入顺序进行排序,用LinkedHashSet
HashSet有以下特点:
不能保证元素的排列顺序,顺序有可能发生变化
不是同步的
集合元素可以是null,但只能放入一个null
LinkedHashSet:
LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet
HashMap、TreeMap、LinkedHashMap的区别:
1、在Map集合中插入、删除和定位元素用HashMap
2、需要集合排序,用TreeMap
3、插入顺序进行排序,用LinkedHashMap
共同点:
HashMap、LinkedHashMap、TreeMap都属于Map
不同点:
1、HashMap里面存入的键值对在取出的时候是随机的,也是我们最常用的一个Map.它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
2、TreeMap取出来的是排序后的键值对。要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
3、 LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现. (应用场景:购物车等需要顺序的)
HashMap和HashSet的区别:
HashMap | HashSet |
---|---|
实现了Map接口 | 实现了Set接口 |
存储键值对 | 存储对象 |
调用put()增加元素 | 调用add()增加元素 |
调用put()增加元素 | 调用add()增加元素 |
使用key计算hashcode | 使用成员对象计算hashcode |
HashMap相对于HashSet比较快 | HashSet相对于HashMap比较慢 |
List、Set、Map的区别:
List、Set是继承collection,Map不是继承collection
List | Set | Map |
---|---|---|
允许有重复的元素 | 不允许有重复的元素 | 不允许有重复的Key(键),但是可以有重复的值 |
可以插入多个null元素 | 只可以插入一个null元素 | Key(键)只能插入一个null元素,但是值可以插入多个null元素 |
有序容器,插入的顺序和输出的顺序一样 | 无序容器 | 无序容器 |
将一个数组转成List
数组转List,可以使用Arrays.asList
List转数组,使用list.toArray