开发手册 欢迎您!
软件开发者资料库

Java 通过List<String>对Map<String, String>中key和value分区分组的方法及示例代码

1、使用partitioningBy和toMap实现Map&lt;String, String&gt; myMap = new HashMap&lt;&gt;();myMap.put("d", "D");myMap.put("c", "C");myMap.put("b", "B");myMap.pu

1、使用partitioningBy和toMap实现

Map myMap = new HashMap<>();
myMap.put("d", "D");
myMap.put("c", "C");
myMap.put("b", "B");
myMap.put("A", "A");
List myList = Arrays.asList("a", "b", "c");
Map> result = myMap.entrySet()
.stream()
.collect(Collectors.partitioningBy(
entry -> myList.contains(entry.getKey()),
Collectors.toMap(Entry::getKey, Entry::getValue)
)
);

结果:

{false={A=A, d=D}, true={b=B, c=C}}

2、使用forEach实现

Map myMap = new HashMap<>();
myMap.put("d", "D");
myMap.put("c", "C");
myMap.put("b", "B");
myMap.put("A", "A");
List list = Arrays.asList("a", "b", "c");
Map> result = Map.of(true, new LinkedHashMap<>(),
false, new LinkedHashMap<>());
Set set = new HashSet<>(list);
myMap.forEach((k, v) -> result.get(set.contains(k)).put(k, v));

结果:

{false={A=A, d=D}, true={b=B, c=C}}

3、使用for实现

Map myMap = new HashMap<>();
myMap.put("d", "D");
myMap.put("c", "C");
myMap.put("b", "B");
myMap.put("A", "A");
List list = Arrays.asList("a", "b", "c");
Map contains = new HashMap<>();
Map containsNot = new HashMap<>();
for(Map.Entry entry : myMap.entrySet()) {
if (list.contains(entry.getKey())) {
contains.put(entry.getKey(), entry.getValue());
} else {
containsNot.put(entry.getKey(), entry.getValue());
}
}

结果:

{false={A=A, d=D}, true={b=B, c=C}}

4、使用groupingBy实现

Map myMap = new HashMap<>();
myMap.put("d", "D");
myMap.put("c", "C");
myMap.put("b", "B");
myMap.put("A", "A");
List myList = Arrays.asList("a", "b", "c");
Function , Boolean> myCondition = i -> myList.contains(i.getKey());
Map>> myPartedMap = myMap.entrySet()
.stream().collect(Collectors.groupingBy(myCondition));
System.out.println(myPartedMap);

结果:

{false={A=A, d=D}, true={b=B, c=C}}

相关文档:

Java 使用stream()将Map String, List String 数据求和(sum)方法代码

Java 将List Object 转换成 Map String, Map String,List Object 的几种方法

Java 将List String 转换成 Map String,List String 的几种方法

Java Stream Collectors.groupingBy实现对List(列表)进行分组的方法