算法-Collection(List、Set) & Map 大厂机考核心方法+遍历总结
·
文章目录
算法机试遍历集合 / 数组:99% 都用 增强 for 循环(for-each)!
能⽤增强 for,就⽤增强 for;需要下标才⽤普通 for;
Java Collection & Map 大厂机考核心方法+遍历总结
这是算法机考高频必背版本,只保留大厂面试/机考最常用的方法,剔除冷门API,清晰分块、带实战代码,直接背就能用。
一、整体分类
Collection(单列集合)
├─ List(有序、可重复、有索引)
└─ Set(无序、不可重复、无索引)
Map(双列集合:key-value)
二、Collection 共有方法(List/Set 都能用)
Collection 是所有单列集合的父接口,以下方法 ArrayList、LinkedList、HashSet、TreeSet 全部通用。
1. 通用核心方法(机考必考)
| 方法 | 作用 |
|---|---|
add(E e) |
添加元素 |
remove(Object o) |
删除指定元素 |
size() |
获取元素个数 |
isEmpty() |
判断是否为空 |
contains(Object o) |
判断是否包含某元素 |
clear() |
清空集合 |
toArray() |
转成数组 |
2. Collection 通用遍历方式(机考最常用增强for)
机考最常用 3 种:增强for、迭代器、forEach(Lambda)
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
coll.add("Java");
coll.add("Python");
coll.add("C++");
// 1. 增强for循环(最常用,代码简洁)
System.out.println("==== 增强for ====");
for (String s : coll) {
System.out.println(s);
}
// 2. 迭代器(遍历时可安全删除元素)
System.out.println("==== 迭代器 ====");
Iterator<String> it = coll.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
// 3. forEach + Lambda(JDK8+,一行搞定)
System.out.println("==== Lambda ====");
coll.forEach(s -> System.out.println(s));
}
}
三、List 集合(独有方法 + 遍历 + 特点)
实现类:ArrayList(机考首选,查询快)、LinkedList(极少用)
1. List 独有方法(基于索引!Set 没有)
| 方法 | 作用 |
|---|---|
get(int index) |
根据索引获取元素(机考高频) |
set(int index, E e) |
修改指定索引位置的元素 |
add(int index, E e) |
在指定索引插入元素 |
remove(int index) |
删除指定索引的元素 |
indexOf(Object o) |
获取元素第一次出现的索引 |
2. List 特有遍历方式:普通 for 循环
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
// List 独有:普通for(通过索引遍历)
for (int i = 0; i < list.size(); i++) {
String s = list.get(i); // 核心:get(index)
System.out.println(s);
}
}
}
3. List 特点
- 有序:存进去和取出来顺序一致
- 可重复:允许存储相同元素
- 有索引:支持通过索引操作(
get/set/add(int index))
四、Set 集合(独有方法 + 遍历 + 特点)
实现类:HashSet(机考首选,去重快)、TreeSet(排序)
1. Set 独有/核心特性
Set 没有任何独有的方法,全部继承自 Collection!
它的核心价值只有一个:自动去重。
机考用途:去重、判断元素是否存在、统计不同元素个数
2. Set 遍历方式
和 Collection 完全一样:增强for、迭代器、Lambda
(Set 无索引,不能用普通 for + get(index))
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("苹果");
set.add("苹果"); // 重复,自动去重
set.add("香蕉");
// 增强for遍历
for (String s : set) {
System.out.println(s); // 输出:苹果、香蕉
}
}
}
3. Set 特点
- 无序(HashSet):存取顺序不一致
- 不可重复:不允许存储相同元素(靠 hashCode() + equals() 判断)
- 无索引:不能通过索引操作,不能用普通 for 遍历
五、List vs Set 核心区别(机考必背)
| 对比项 | List | Set |
|---|---|---|
| 顺序 | 有序 | 无序(HashSet) |
| 重复 | 可重复 | 不可重复 |
| 索引 | 有索引 | 无索引 |
| 核心方法 | get(index) |
无独有方法 |
| 遍历 | 普通for/增强for/迭代器 | 增强for/迭代器 |
| 机考场景 | 有序存储、按索引取值 | 去重、快速判重 |
六、Map 集合(机考高频:HashMap)
Map 是双列集合,存储 key-value,key 不可重复。
1. Map 核心方法
| 方法 | 作用 |
|---|---|
put(K key, V value) |
添加/修改键值对 |
get(Object key) |
根据 key 获取 value |
remove(Object key) |
根据 key 删除键值对 |
containsKey(Object key) |
判断是否包含某个 key(高频) |
containsValue(Object v) |
判断是否包含某个 value |
keySet() |
获取所有 key 的集合 |
entrySet() |
获取所有键值对对象 |
size() |
获取键值对个数 |
clear() |
清空 |
2. Map 2 种最常用遍历(机考必背)
① keySet 遍历(先拿 key,再拿 value)
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("张三", 20);
map.put("李四", 22);
// 方式1:keySet遍历(最常用)
Set<String> keys = map.keySet();
for (String key : keys) {
Integer value = map.get(key);
System.out.println(key + ":" + value);
}
}
}
② entrySet 遍历(直接拿键值对,效率更高)
// 方式2:entrySet遍历(大数据量推荐)
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ":" + value);
}
③ JDK8 Lambda(简洁写法)
map.forEach((k, v) -> System.out.println(k + ":" + v));
七、机考高频速记(背这个就够)
Collection
- 通用:
add、remove、size、contains、isEmpty - 遍历:增强for、迭代器、Lambda
List
- 独有:
get(index)、set、add(index) - 遍历:普通 for + 索引
- 特点:有序、可重复、有索引
Set
- 无独有方法
- 作用:去重、判重
- 特点:无序、不可重复、无索引
Map(HashMap)
- 核心:
put、get、containsKey、keySet、entrySet - 遍历:keySet、entrySet、Lambda
- key 唯一、无序
总结
- Collection 单列集合,通用方法 + 遍历方式完全一致;
- List 靠索引吃饭,
get(index)是灵魂; - Set 靠去重吃饭,无索引;
- Map 双列 key-value,
containsKey机考刷频率极高。
这份内容覆盖 99% 大厂算法机考集合操作,直接背诵+默写即可。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)