我们先通过一张思维导图认识一下集合的框架构成,方便理解和记忆。
1、ArrayList和LinkList的区别?
- ArrayList是数组结构,LinkList是链表结构。
- ArrayList查询速度快,增删改速度慢。
- LinkList刚好和ArrayList相反,LinkList查询速度慢,增删改速度快。
2、Collection接口的remove()方法和Iterator接口的remove()方法区别?
- Collection接口的remove()必须通过下标或者集合内的元素去删除,iterator接口remove()必须配合next()方法一起使用。
3、Array与ArrayList有什么区别?
- Array是数组,ArrayList是数组集合。
- Array需要指定大小,ArrayList不需要指定大小(ArrayList自动扩容大小,默认大小为10,当你添加第11个时,ArrayList就会以10*1.5=15去扩容,此时大小为15,当添加第16个时,ArrayList就会以15*1.5=22去扩容,以此内推扩容)。
4、怎样将一个数组转成List,有什么方法?
- 数组转list,可以使用Arrays.asList(数组)
- List转数组,使用list.toArray()
-
public static void main(String[] args) { //数组转list String[] str = {"zhangsan","lisi","wangwu"}; List<String> arrayList = Arrays.asList(str); //list转数组 List<String> list = new ArrayList<>(); list.add("zhangsan"); list.add("lisi"); list.add("wangwu"); String[] arrays = list.toArray(new String[list.size()]); }
5、HashSet、TreeSet、LinkedHashSet区别?
- HashSet速度快
- TreeSet有排序功能
- LinkedHashSet先存先取(类似与花名册,来的早的名字在前面,晚的在后面)
6、HashMap、TreeMap、LinkedHashMap区别?
- HashMap速度快
- TreeMap有排序功能
- LinkedHashMap先存先取(类似与花名册,来的早的名字在前面,晚的在后面)
7、HashMap和HashSet区别
HashMap | HashSet |
---|---|
调用put()的方法往map里面填值 | 调用add()的方法往Set里面填值 |
实现map接口 | 实现set接口 |
以键值对存储 | 存储对象 |
比HashSet存储快 | 比HashMap存储慢 |
使用key计算hashcode | 使用成员对象计算hashcode |
8、HashMap的实现原理
HashMap是以键值对存储,键不能重复,值可以重复,通过put(object,object)方法存,通过get(object)取值
9、List、Set、Map之间的区别
List和Set都继承Collection,但是Map不是Collection的子接口。
List | Set | Map |
---|---|---|
可以有重复值 | 不能有重复值 | 键不能重复,值可以重复 |
可以有多个null值 | 只能有一个null值 | 键只能有一个null,值可以有多个重复值 |
有序容器,插入的顺序和输出的顺序一样 | 无序容器 | 无序容器 |