java中map中一个key对应两个值,怎么遍历取出这两个值
时间: 2024-10-20 21:04:50 浏览: 40
在Java中,Map数据结构通常是一对一的关系,即每个键(key)对应一个值(value)。然而,如果你需要存储一对相关的键值对,并希望它们可以被视为一组,你可以使用自定义的`Map.Entry`或者创建一个内部的数据结构来承载这样的关联。
如果你想模拟这种行为,一种常见的做法是创建一个包装类或者使用像`java.util.Pair`或自己定义类似结构,然后将这些关联作为单个键的值:
```java
import java.util.*;
class Pair<K, V> {
private K key;
private List<V> values;
public Pair(K key, V value) {
this.key = key;
this.values = new ArrayList<>();
values.add(value);
}
public void addValue(V value) {
values.add(value);
}
public K getKey() {
return key;
}
public List<V> getValues() {
return values;
}
}
public class Main {
public static void main(String[] args) {
Map<String, Pair<String, Integer>> map = new HashMap<>();
map.put("KeyA", new Pair<>("A1", 1));
map.put("KeyB", new Pair<>("B1", 2));
map.put("KeyA", new Pair<>("A2", 3)); // 如果同一个键有多个值
for (Map.Entry<String, Pair<String, Integer>> entry : map.entrySet()) {
String key = entry.getKey();
Pair<String, Integer> pair = entry.getValue();
System.out.println("Key: " + key);
for (Integer value : pair.getValues()) {
System.out.println(" Value: " + value);
}
}
}
}
```
在这个例子中,我们首先定义了一个`Pair`类,用于保存一个键及其对应的多个值。然后在`main`函数中,我们遍历了`map`,打印出每个键和其所有值。
阅读全文