使用 java 8 引入的 stream api 中的 map() 方法可以将 arraylist 中的每个元素转换为新类型并收集为新的列表。具体做法是调用原列表的 .stream() 方法,链式调用 .map(转换函数) 指定转换逻辑,最后通过 .collect(collectors.tolist()) 将结果重新组装为 list。此操作会生成一个包含转换后元素的新列表,原列表保持不变。

如何将字符串列表映射为整数列表
当需要将 ArrayList<string></string> 转换为 ArrayList<integer></integer> 时,可以使用 Integer::parseInt 作为转换函数。这会将列表中的每个字符串解析为对应的整数值,若字符串格式非法则会抛出异常。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
stringList.add("10");
stringList.add("20");
stringList.add("30");
List<Integer> intList = stringList.stream()
.map(Integer::parseInt)
.collect(Collectors.toList());
System.out.println(intList); // [10, 20, 30]
}
}
如何将对象列表映射为属性列表
若要将包含对象的列表(如 User 对象)转换为仅包含特定属性(如用户名 name)的字符串列表,可以定义一个 Lambda 表达式或方法引用提取该属性。例如,从 User 对象中提取 getName() 的值。
立即学习“Java免费学习笔记(深入)”;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class User {
String name;
User(String name) { this.name = name; }
String getName() { return name; }
}
public class Main {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("Alice"));
users.add(new User("Bob"));
List<String> names = users.stream()
.map(User::getName)
.collect(Collectors.toList());
System.out.println(names); // [Alice, Bob]
}
}
如果输入列表中包含 null 值会发生什么
如果在源 ArrayList 中存在 null 元素,直接对其进行 map 操作会导致 NullPointerException。因为转换函数试图在 null 上执行方法调用或解析。必须在 map 之前过滤掉 null 值,或者在转换函数中处理 null 情况。


















