不能使用stream流,map中key和value互相转化,并将相同的vale值所对应的key存入到list集合中,
时间: 2024-02-27 11:59:16 浏览: 63
不使用`Stream`流的话,我们可以使用一个`HashMap`来保存值相同的键的列表,遍历原始`Map`的键值对,将相同值的键添加到对应的列表中,最后得到一个值为列表的`HashMap`。
下面是示例代码:
```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 = new HashMap<>();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
Integer value = entry.getValue();
String key = entry.getKey();
List<String> list = result.get(value);
if (list == null) {
list = new ArrayList<>();
result.put(value, list);
}
list.add(key);
}
System.out.println(result);
}
}
```
输出结果与上面的示例相同:
```
{1=[apple, orange], 2=[banana], 3=[peach]}
```
在这个例子中,我们首先创建了一个空的`HashMap`,然后遍历原始`Map`的键值对,对于每个键值对,我们获取它的值并将它作为`HashMap`的键,然后获取对应的列表,如果列表不存在,则创建一个新的空列表并将其添加到`HashMap`中。接着将当前键添加到列表中。最后得到一个值为列表的`HashMap`。
阅读全文