问答详情
源自:4-4 Stream操作集合中的数据-上

一个stream转回map的问题

//Map获取Stream对象
Map<String, String> strMap = new HashMap<>();
strMap.put("Jack", "上海市浦东新区");
strMap.put("Tom", "上海市闵行区");
//通过Map的EntrySet获取Stream对象
Set<Map.Entry<String, String>> entrySet = strMap.entrySet();
Stream<Map.Entry<String, String>> mapStream = entrySet.stream();

//stream转换成Map
Map<Map.Entry<String, String>, Map.Entry<String, String>> map = mapStream.collect(Collectors.toMap(x -> x, y -> y));


这里是用map的entrySet来获取stream对象的,

想直接toMap转回Map,但是就会多包一层。

我倒是可以从entrySet里一个一个取元素放到一个新Map里,老式写法。。

但是怎么使用lambda方便快捷地转回去呢?


提问者:马什么梅 2020-04-18 23:41

个回答

  • Dream_Weaving
    2021-01-02 19:53:30

    Map<String, Integer> stringIntegerMap = stream5.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    System.out.println(stringIntegerMap);

  • 慕田峪33150064
    2020-05-10 21:19:32

    Map<String, String> strMap = new HashMap<>();
    strMap.put("Jack", "上海市浦东新区");
    strMap.put("Tom", "上海市闵行区");
    //通过Map的EntrySet获取Stream对象
    Map<String,String> newMap=new HashMap<>();
    strMap.entrySet().stream().forEach(v->{
        newMap.put(v.getKey(),v.getValue());
    });
    newMap.entrySet().stream().forEach(System.out::println);