繁体   English   中英

使用Java Stream将List和String列表转换为Map

[英]Converting List of List and String to Map with Java Stream

我有一个这样的课:

public class A {
    private List<String> stringList;
    private String someString;
}

我有这样的对象列表,如下所示:

List<A> list = //some method to generate list

我想将它转换为Map<String, String> ,其中stringList中的每个字符串映射到相同的someString值(如multimap)。 我怎么能用java 8流做到这一点?

我可以将其转换为平面地图,如下所示:

list.stream.flatMap(....

但我不知道从那里去哪里。

尝试这个。

Map<String, String> r = list.stream()
    .flatMap(a -> a.stringList.stream()
        .map(k -> new AbstractMap.SimpleEntry<>(k, a.someString)))
    .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));

这已经在这里这里得到了解答。 基本上,您将为列表创建一个hashmap,如果列表很大,则应该避免这样做。

我希望这有帮助。

List<String> fruits = Arrays.asList("Apple", "Orange", "Grape");
Map<String, String> myMap = fruits.stream().collect(Collectors.toMap(String::toString, String::toString));
myMap.forEach((k,v)->System.out.println("key : " + k + " value : " + v));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM