53639


JAVAのMap型について質問です。

[code]

    List<String> array = new ArrayList<String>();
    Map<String, "文字列や数値、配列">　map = new HashMap<String, "文字列や数値、配列">();
    map.put("strA", "文字");
    map.put("strA", 1);
    map.put("strA", array);
    
[/code]

上記のように、valueにあたる部分に文字列や数値、配列が混ざったMapを作りたいのですが、どのようにすればよいでしょうか？

初歩的な質問となり大変恐縮ですが、ご教示いただけますと幸いです。


CC BY-SA 4.0
2019-03-22T01:58:51.293
53636
2019-03-22T02:49:09.250
2019-03-22T02:11:58.553
2238
29108
question
java
Map型におけるvalueの型について


`Object`型で格納して`instanceof`で判別できます。

[code]

    import java.util.Map;
    import java.util.HashMap;
    import java.util.List;
    import java.util.ArrayList;
    
    public class Sample1 {
        public static void main(String[] args) {
            List<String> array = new ArrayList<String>();
            Map<String, Object> map = new HashMap<>();
            map.put("strA", "文字");
            map.put("strB", 1);
            map.put("strC", array);
            for(String key : map.keySet()) {
                Object obj = map.get(key);
                String className = obj.getClass().getName();
                System.out.println(String.format("%s の値は %s クラスです。", key, className));
    
                if (obj instanceof List) {
                    List<String> value = (List<String>)obj;
                    System.out.println(String.format("リストのサイズは %d です", value.size()));
                } else if (obj instanceof String) {
                    String value = (String)obj;
                    System.out.println(value);
                } else if (obj instanceof Integer) {
                    int value = (int)obj;
                    System.out.println(value);
                }
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2019-03-22T02:49:09.250
53639
2019-03-22T02:49:09.250
9820
53636
answer