You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:12:07