【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

广告
将在 10 秒后关闭
bannerAds