【Java】创建二维关联数组
如果有其他人知道二维关联数组的实现方法,请讲解给我听。
代码 (Mandarin Chinese: “”)
import java.util.HashMap;
import java.util.Map;
class Main {
public static void main(String[] args) {
Map<Integer, Map<String,Object>> map = new HashMap<Integer, Map<String,Object>>();
map.put(1, new HashMap<String,Object>());
map.get(1).put("名前","田中");
map.get(1).put("国語", 33);
map.get(1).put("数学", 10);
map.put(2, new HashMap<String,Object>());
map.get(2).put("名前","高橋");
map.get(2).put("国語", 63);
map.get(2).put("数学", 62);
System.out.println(map);
}
}
结局
{1={名前=田中, 国語=33, 数学=10}, 2={名前=高橋, 国語=63, 数学=62}}
编码
import java.util.*;
public class Main {
public static void main(String[] args) {
Map2d<Integer, String, Object> map = new Map2d<>();
map.put(1, "名前", "田中");
map.put(1, "国語", 33);
map.put(1, "数学", 10);
map.put(2, "名前","高橋");
map.put(2, "国語", 63);
map.put(2, "数学", 62);
System.out.println(map);
System.out.println(map.get(1, "数学"));
System.out.println(map.get(1, "理科"));
System.out.println(map.get(3, "国語"));
}
static class Map2d<K1, K2, V> {
Map<K1, Map<K2,V>> map = new HashMap<>();
public void put(K1 k1, K2 k2, V v) {
map.computeIfAbsent(k1, k -> new HashMap<>()).put(k2, v);
}
public V get(K1 k1, K2 k2) {
return Optional.ofNullable(map.get(k1))
.map(s -> s.get(k2))
.orElse(null);
}
@Override
public String toString() {
return map.toString();
}
}
}
结果 –
{1={名前=田中, 国語=33, 数学=10}, 2={名前=高橋, 国語=63, 数学=62}}
10
null
null