簡體   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