223. Java 集合 - 认识 Java 集合体系

43 阅读2分钟

223. Java 集合 - 认识 Java 集合体系


1. 🧭 防止在集合体系中迷路

Java的**集合框架(Collections Framework)**被分成了多个层次结构(Hierarchies),主要是为了组织不同的数据存储方式。

首先我们需要掌握的,是最基础的: ➡️ Collection接口体系(Collection Interface Hierarchy)


2. 🛤️ Collection接口体系概览

简单来说,Collection接口体系长这样(省略了一些次要接口,后面会补充):

Iterable
   ↓
Collection
   ↓
-----------------------------
|            |              |
List         Set            Queue
  • Iterable 是最顶层(但其实不属于Collections Framework本身)
  • Collection 是集合体系的核心接口
  • ListSetQueue 是三大常用子接口

🎯 记住一句话:

凡是 Collection 的子接口,都是可以被“遍历(iterate)”的。


3. 🔍 深入理解 Iterable 接口

虽然 Iterable 接口不是严格意义上的集合框架的一部分,但它非常重要。 因为所有集合Collection)都继承自 Iterable,这意味着: ✅ 任何集合对象都可以用for-each语法来遍历!

📖 什么是 Iterable

  • Iterable 接口是在 Java SE 5(2004年) 中引入的。
  • 它的作用是:提供一个Iterator对象,让你可以遍历元素
  • 它只要求实现一个方法:iterator(),返回一个 Iterator<E>

🚀 经典示例:使用 for-each 遍历集合

import java.util.*;

public class IterableExample {
    public static void main(String[] args) {
        Collection<String> names = List.of("Alice", "Bob", "Charlie");

        for (String name : names) {
            System.out.println(name);
        }
    }
}

输出:

Alice
Bob
Charlie

🎯 这里的 names 就是一个 Collection,它继承了 Iterable,因此可以直接用 for-each 遍历!


4. 🔧 自定义一个Iterable对象(进阶示例)

如果你自己写一个类,只要实现 Iterable 接口,就能支持for-each遍历!

🌟 示例:自定义一个简单的数字集合

import java.util.Iterator;

public class MyNumberCollection implements Iterable<Integer> {
    private int[] numbers = {1, 2, 3, 4, 5};

    @Override
    public Iterator<Integer> iterator() {
        return new Iterator<Integer>() {
            private int index = 0;

            @Override
            public boolean hasNext() {
                return index < numbers.length;
            }

            @Override
            public Integer next() {
                return numbers[index++];
            }
        };
    }

    public static void main(String[] args) {
        MyNumberCollection collection = new MyNumberCollection();
        for (int number : collection) {
            System.out.println(number);
        }
    }
}

输出:

1
2
3
4
5

🧠 解释:

  • 实现Iterable接口。
  • 提供自己的Iterator
  • 支持优雅地用for-each语法进行遍历。

5. ✨ 小结

  • Collection体系的顶层是Iterable,它保证了所有集合可以使用for-each遍历。
  • Iterable非常轻量,只要求返回一个Iterator对象。
  • 掌握Iterable,理解for-each背后的本质。