LoginSignup
0
1

More than 1 year has passed since last update.

【java】javaにおける2次元の連想配列を作成

Last updated at Posted at 2022-05-10

他に2次元の連想配列のやり方を知っている人がいたらご教授ください

コード

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

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1