算法机试遍历集合 / 数组: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 唯一、无序

总结

  1. Collection 单列集合,通用方法 + 遍历方式完全一致;
  2. List 靠索引吃饭,get(index) 是灵魂;
  3. Set 靠去重吃饭,无索引;
  4. Map 双列 key-value,containsKey 机考刷频率极高。
    这份内容覆盖 99% 大厂算法机考集合操作,直接背诵+默写即可。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐