版本:基于 Java 17 & Java 21 LTS
在 Java 中,处理一组数据是极其常见的需求。本篇我们将从传统的数组出发,逐步过渡到功能更强大、使用更灵活的集合框架(Collections Framework)。
1. 传统的数组 (Arrays)
数组是内存中连续的存储空间,大小固定,性能最优。
1.1 声明与初始化
// 静态初始化
int[] numbers = {1, 2, 3, 4, 5};
// 动态初始化:必须指定长度
var fruits = new String[3];
fruits[0] = "Apple";
// 二维数组 (多维数组)
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};1.2 Arrays 工具类 (java.util.Arrays)
处理数组时,永远优先考虑 Arrays 提供的静态方法:
import java.util.Arrays;
int[] arr = {3, 1, 4, 2};
Arrays.sort(arr); // 排序
Arrays.fill(arr, 0); // 填充
Arrays.toString(arr); // 快速打印数组内容
Arrays.equals(arr1, arr2); // 比较两个数组内容2. 现代集合框架 (Collections)
2.1 核心体系结构
Java 集合类库主要分为两大接口:Collection (单列) 和 Map (双列/键值对)。
List (有序、可重复):
ArrayList,LinkedListSet (无序、唯一):
HashSet,TreeSet(排序)Map (键值对):
HashMap,TreeMap(按键排序)
2.2 不可变集合 (Immutable Collections)
在现代 Java 开发中,如果你确定集合不需要修改,应优先使用工厂方法:
var list = List.of("A", "B", "C");
var set = Set.of(1, 2, 3);
var map = Map.of("Key", "Value", "ID", 101);3. 常用操作与技巧
3.1 集合排序
import java.util.Collections;
import java.util.ArrayList;
var scores = new ArrayList<Integer>();
scores.add(90);
scores.add(85);
// 现代写法:List 接口自带 sort
scores.sort(java.util.Comparator.naturalOrder()); // 升序3.2 集合与数组的转换
// 集合转数组
String[] array = list.toArray(new String[0]);
// 数组转集合
List<String> listFromArray = Arrays.asList("x", "y", "z");4. 集合处理的灵魂:Stream API 初探
现代 Java 几乎不再手动遍历集合进行复杂筛选,而是使用流式处理:
var numbers = List.of(1, 2, 3, 4, 5, 6);
// 过滤偶数并求和
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();本章小结
第三篇我们深度学习了:
数组的内存特性与
Arrays工具类。集合框架的三巨头:
List,Set,Map。不可变集合的创建方式。
集合排序、转换及 Stream API 的初步应用。
下一篇预告:面向对象基础 (类、对象、封装、初始化块)