225. Java 集合 - List接口 ------ 记住顺序的集合
1. 🔹 List和普通Collection有什么区别?
在Java集合框架中,**List是 Collection**的一个子接口。 最大的不同在于: ✅ List会记住元素添加的顺序!
📌 具体区别总结
- 在 普通Collection(例如Set)中,元素的顺序是不确定的。
- 在 List中,元素的顺序是确定的 ------ 元素怎么添加进去,遍历时就怎么出来。
2. 🚀 遍历时顺序固定
当你使用 for-each 或 iterator() 遍历一个List时:
- 第一个访问的元素,就是第一个添加的元素。
- 第二个访问的元素,就是第二个添加的元素。
- 以此类推,顺序永远一致。
📢 注意:
- 有些 Set实现(比如LinkedHashSet)也会"保持添加顺序",但这只是意外效果。
- 不要依赖Set的顺序行为 ,因为它不是Set接口的规范!
3. 🎯 List元素有索引
另一个重要的区别是:
- 普通的Collection不能直接访问"第一个元素"或者"第二个元素"。
- 而在List中,每个元素有一个明确的索引(index),从0开始编号。
因此,在List中你可以:
- 按索引获取元素 :list.get(index)
- 按索引插入元素 :list.add(index, element)
- 按索引替换元素 :list.set(index, newElement)
- 按索引删除元素 :list.remove(index)
- 获取子列表 :list.subList(fromIndex, toIndex)
4. 🛠️ 示例:基本List操作
            
            
              java
              
              
            
          
          import java.util.*;
public class ListExample {
    public static void main(String[] args) {
        List<String> cities = new ArrayList<>();
        // 添加元素
        cities.add("Beijing");
        cities.add("Shanghai");
        cities.add("Guangzhou");
        // 顺序遍历
        for (String city : cities) {
            System.out.println(city);
        }
        // 访问特定位置元素
        System.out.println("First city: " + cities.get(0)); // 输出:Beijing
        // 插入元素
        cities.add(1, "Shenzhen");
        System.out.println("After inserting Shenzhen: " + cities);
        // 替换元素
        cities.set(2, "Hangzhou");
        System.out.println("After replacing second city: " + cities);
        // 删除元素
        cities.remove(3);
        System.out.println("After removing city at index 3: " + cities);
        // 获取子列表
        List<String> subCities = cities.subList(0, 2);
        System.out.println("Sublist: " + subCities);
    }
}运行输出:
            
            
              java
              
              
            
          
          Beijing
Shanghai
Guangzhou
First city: Beijing
After inserting Shenzhen: [Beijing, Shenzhen, Shanghai, Guangzhou]
After replacing second city: [Beijing, Shenzhen, Hangzhou, Guangzhou]
After removing city at index 3: [Beijing, Shenzhen, Hangzhou]
Sublist: [Beijing, Shenzhen]5. 🧠 小总结
| 特性 | Collection | List | 
|---|---|---|
| 是否保证元素顺序? | 不保证 | 保证插入顺序 | 
| 是否有索引? | 没有 | 有,支持get/set/add(index)等 | 
| 遍历元素顺序 | 不确定 | 确定 | 
| 支持随机访问元素? | 否 | 是 | 
📌 小贴士
- 
可以举生活例子: "想象一下,Collection像是一堆无序散落的信件,而List则像是一叠有编号的文件夹,顺序整整齐齐。" 
- 
提个问题引导互动: "如果我需要按添加顺序取回元素,还能随机访问第3个元素,我应该选Collection还是List?"】】、】