如何将Map转换为List?利用Java 8简化Map值转对象列表操作
用Java 8简化Map值转对象属性列表的方法
你可以利用Java 8的Stream API把getNames()方法简化成一行逻辑,核心是通过流式操作替代传统循环:
简化后的getNames()方法
import java.util.List; import java.util.Map; import java.util.stream.Collectors; public List<String> getNames(Map<Integer, MySubObject> inputMap) { return inputMap.values().stream().map(MySubObject::getName).collect(Collectors.toList()); }
步骤拆解
inputMap.values():获取Map中所有的MySubObject实例集合.stream():将集合转换为Stream,开启流式处理.map(MySubObject::getName):通过方法引用,把每个MySubObject映射为它的name属性值.collect(Collectors.toList()):将流中的所有字符串收集为List<String>返回
修改后的完整MyTestMap类
import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class MyTestMap { public MyTestMap() {} public List<String> getNames(Map<Integer, MySubObject> inputMap) { return inputMap.values().stream().map(MySubObject::getName).collect(Collectors.toList()); } public static void main(String[] args) { MySubObject obj1 = new MySubObject(1, "AAA", 10); MySubObject obj2 = new MySubObject(2, "BBB", 20); MySubObject obj3 = new MySubObject(3, "CCC", 30); Map<Integer, MySubObject> myMap = new HashMap<>(); myMap.put(obj1.getId(), obj1); myMap.put(obj2.getId(), obj2); myMap.put(obj3.getId(), obj3); System.out.println(new MyTestMap().getNames(myMap)); } }
内容的提问来源于stack exchange,提问作者dds
相关产品推荐
相关产品推荐

