gpt4 book ai didi

java - 收集 HashMap> java 8

转载 作者:IT老高 更新时间:2023-10-28 21:17:22 25 4
gpt4 key购买 nike

我希望能够将 List 转换为 HashMap,其中键是 elementName,值是某物的列表随机(在本例中为元素名称)。所以简而言之,我想要 (A->List(A), B->List(B), C-> List(C))。我尝试使用 toMap() 并将 keyMapperValueMapper 传递给它,但出现编译错误。如果有人可以帮助我,我将不胜感激。

谢谢!

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = Arrays.asList("A","B","C","D");
Map<String, List<String>> map = list.stream().map((element)->{
Map<String, List<String>> map = new HashMap<>();
map.put(element, Arrays.asList(element));
return map;
}).collect(??);
}


Function<Map<String, String>, String> key = (map) -> {
return map.keySet().stream().findFirst().get();
};

Function<Map<String, String>, String> value = (map) -> {
return map.values().stream().findFirst().get();
};

=== 这对我有用

感谢大家的帮助! @izstas“他们应该对元素进行操作”帮助很大:)。实际上,这正是我想要的准确

public static void test2 (){
Function<Entry<String, List<String>>, String> key = (entry) -> {
return entry.getKey();
};
Function<Entry<String, List<String>>, List<String>> value = (entry) -> {
return new ArrayList<String>(entry.getValue());
};
BinaryOperator<List<String>> merge = (old, latest)->{
old.addAll(latest);
return old;
};

Map<String, List<String>> map1 = new HashMap<>();
map1.put("A", Arrays.asList("A1", "A2"));
map1.put("B", Arrays.asList("B1"));
map1.put("D", Arrays.asList("D1"));

Map<String, List<String>> map2 = new HashMap<>();
map2.put("C", Arrays.asList("C1","C2"));
map2.put("D", Arrays.asList("D2"));

Stream<Map<String, List<String>>> stream =Stream.of(map1, map2);
System.out.println(stream.flatMap((map)->{
return map.entrySet().stream();
}).collect(Collectors.toMap(key, value, merge)));
}

最佳答案

您可以使用 groupingBy 方法来管理聚合,例如:

public static void main(String[] args) {
List<String> list = Arrays.asList("A", "B", "C", "D", "A");
Map<String, List<String>> map = list.stream().collect(Collectors.groupingBy(Function.identity()));
}

如果您想要更大的灵 active (例如映射值并返回 Set 而不是 List),您始终可以使用 groupingBy 方法和 javadoc 中指定的更多参数:

Map<City, Set<String>> namesByCity = people.stream().collect(Collectors.groupingBy(Person::getCity, mapping(Person::getLastName, toSet())));

关于java - 收集 HashMap<String, List<String>> java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com