在java stream的map中使用lambda表达式,直接调用stream对象的map方法并将lambda作为参数传入即可。该方法接收一个函数式接口function

如何对List中的对象进行属性映射
使用Stream的map方法可以将一个类型的对象列表转换为另一个类型的对象列表。例如,将User对象列表转换为String姓名列表,只需在map中定义提取姓名的逻辑。这种操作是流管道的一部分,不会修改原始数据源。

import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob");
List<Integer> lengths = names.stream()
.map(name -> name.length())
.collect(Collectors.toList());
System.out.println(lengths);
}
}
预期输出:[5, 3]
立即学习“Java免费学习笔记(深入)”;
如何处理Map中的值转换
当需要对Map的值进行转换时,可以使用entrySet().stream()获取键值对流,然后在map中通过Map.Entry访问键和值。这种方式允许同时基于键和值进行转换,或者仅转换值而保留键不变。最终收集回Map类型。

import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
Map<String, String> result = map.entrySet().stream()
.map(e -> new AbstractMap.SimpleEntry<>(e.getKey(), e.getValue() * 10))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(result);
}
}
预期输出:{a=10, b=20}
当Stream元素为null时会发生什么
如果在Stream中包含null元素,并在map的Lambda中对null执行方法调用(如length()),会抛出NullPointerException。为了避免这种情况,可以在map之前使用filter过滤掉null,或者在Lambda内部添加空值检查。


















