我有一个这样的课程:
public class A {
private List<String> stringList;
private String someString;
}
我有这样的对象列表,如下所示:
List<A> list = //some method to generate list
我想将此转换为Map<String, String>
,其中stringList
中的每个字符串都映射到相同的someString
值(如多图)。我怎么能用java 8 stream做到这一点?
我可以将其转换为平面地图,如下所示:
list.stream.flatMap(....
但我不确定从哪里去。
答案 0 :(得分:3)
试试这个。
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()));
答案 1 :(得分:0)
答案 2 :(得分:0)
我希望这会有所帮助。
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));