收集HashMap > java 8

26 浏览
0 Comments

收集HashMap > java 8

我希望能够将一个List转换为一个HashMap,其中键是elementName,值是一些随机的内容(在这种情况下是Element Name)。简而言之,我想要的是(A->List(A),B->List(B),C-> List(C))。我尝试使用toMap()方法并传递keyMapper和ValueMapper,但是我得到了一个编译错误。如果有人能帮助我,我将非常感激。

谢谢!

public static void main(String[] args) {

// TODO Auto-generated method stub

List list = Arrays.asList("A","B","C","D");

Map> map = list.stream().map((element)->{

Map> map = new HashMap<>();

map.put(element, Arrays.asList(element));

return map;

}).collect(??);

}

Function, String> key = (map) -> {

return map.keySet().stream().findFirst().get();

};

Function, String> value = (map) -> {

return map.values().stream().findFirst().get();

};

=== 这对我有用

谢谢大家的帮助! @izstas的建议“它们应该操作元素”对我很有帮助 :)。实际上,这正是我想要的

public static void test2 (){

Function>, String> key = (entry) -> {

return entry.getKey();

};

Function>, List> value = (entry) -> {

return new ArrayList(entry.getValue());

};

BinaryOperator> merge = (old, latest)->{

old.addAll(latest);

return old;

};

Map> map1 = new HashMap<>();

map1.put("A", Arrays.asList("A1", "A2"));

map1.put("B", Arrays.asList("B1"));

map1.put("D", Arrays.asList("D1"));

Map> map2 = new HashMap<>();

map2.put("C", Arrays.asList("C1","C2"));

map2.put("D", Arrays.asList("D2"));

Stream>> stream =Stream.of(map1, map2);

System.out.println(stream.flatMap((map)->{

return map.entrySet().stream();

}).collect(Collectors.toMap(key, value, merge)));

}

0