map中key和value互相转化,并将相同的vale值所对应的key存入到list集合中
时间: 2024-02-27 16:59:13 浏览: 78
可以使用Java 8的Stream API来完成这个操作。首先,我们可以使用`entrySet()`方法将`Map`转化为`Stream<Map.Entry<K, V>>`,然后通过`Collectors.groupingBy()`将值相同的键分组成一个`List`,最后通过`Collectors.mapping()`将`Map.Entry<K, List<V>>`转化为`Map<V, List<K>>`。
下面是示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 1);
map.put("peach", 3);
Map<Integer, List<String>> result = map.entrySet().stream()
.collect(Collectors.groupingBy(Map.Entry::getValue,
Collectors.mapping(Map.Entry::getKey, Collectors.toList())));
System.out.println(result);
}
}
```
输出结果为:
```
{1=[apple, orange], 2=[banana], 3=[peach]}
```
其中,键为值,值为键的集合。在这个例子中,值为1的键是"apple"和"orange",值为2的键是"banana",值为3的键是"peach"。
阅读全文