2026-05-27 Java集合框架:List、Set、Map一课通

背景

借书系统升级——LibraryService 增加 List<Item> items 书架,用集合框架统一管理所有馆藏。

List:有序可重的书架

1
2
3
4
List<Item> items = new ArrayList<>();
items.add(book1);
items.add(magazine1);
System.out.println(items.size());

有索引、按插入顺序排列、允许重复。

for-each + break vs forEach + lambda:需要找到目标就早退时用 for-each,对所有元素统一操作时用 forEach。

Set:自动去重

1
2
3
4
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Java");
System.out.println(set.size());

无索引、不允许重复。去重依赖于 equals() 和 hashCode():

  • String 字面量在常量池,相同内容的两个变量指向同一对象 → Set 正确去重
  • new Book() 在堆上每次创建新对象,未重写 equals() 前按地址比较 → 同名同作者的两个 Book 都能进 Set

Map:键值对,靠 key 一步定位

1
2
3
Map<Integer, Item> map = new HashMap<>();
map.put(1, book1);
Item item = map.get(1);
  • 键不可重复,后续 put 相同 key 会覆盖旧值
  • 适合用唯一标识快速查找对象的场景

对比

集合 有序 可重复 有索引 场景
List ✅ ✅ ✅ 按序存取
Set ❌ ❌ ❌ 去重
Map ❌ key不可重 ❌ 按键查找

2026-05-27 Java集合框架:List、Set、Map一课通
http://example.com/2026/05/27/2026-05-27 Java集合框架:List、Set、Map一课通/
作者
北街
发布于
2026年5月27日
许可协议