什么是集合

——若干确定元素构成的整体。

特点:

  1. 接口与实现分离:即接口只定义行为,不关心怎么做。例如有序表的接口是 List,具体的实现类有 ArrayListLinkedList
  2. 支持泛型java-4.泛型
  3. 通过统一方式——迭代器 (Iterator) 访问
1
2
3
4
5
Iterator<String> it = list.iterator(); // 获取遥控器
while (it.hasNext()) { // 问:还有吗?
String s = it.next(); // 答:给我下一个
System.out.println(s);
}

集合的分类有哪些

  • list:有序列表
  • set:无重复元素
  • map:键值对

List

常用函数

1
2
3
4
5
6
7
list.add(i) //末尾添加元素
list.add(int index, i) //在指定索引添加元素
list.remove(i) //删除元素
list.remove(int index) //删除指定索引的元素
list.contains(i) // 判断元素是否存在
list.size() //获取链表大小
list.get(int index) //获取指定索引的元素

迭代器的实现原理是什么?

为什么 new ArrayList<>()时建议指定初始化容量值

为什么 Arraylist 默认情况下的扩容机制是扩容为原数组的1.5倍

Arraylist是线程的安全吗

CopyOnWriteArraylist 的实现原理
HashMap的添加元素流程
HashMap扩容加载因子为什么是0.75

HashMap扩容为什么扩容为数组长度的2倍

HashMap是线程的安全吗
ConcurrentHashMap的实现原理