有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有接受各种数据类型值的字典吗?

我需要一个映射,其中的值是不同类型的,如整数、字符串等。Java的问题是这里的原语不是Object,这表明可能不可能有一个混合字典。我想确认一下


共 (4) 个答案

  1. # 1 楼答案

    您可以使用Integer而不是int

  2. # 2 楼答案

    您可以利用自动装箱并使用Integer而不是int等等

    相应的类型(IntegerDoubleBool,…)继承对象,这样您就可以使用标准的Map<Object, Whatever>并向它抛出任意内容

  3. # 3 楼答案

    听起来你只是想要一个Map<String, Object>(或者任何你的键类型)

    基本值将被适当地装箱:

    Map<String, Object> map = new HashMap<String, Object>();
    
    map.put("int", 20);
    map.put("long", 100L);
    // etc
    

    请注意,为了检索值并unbox它,您必须提到特定的包装器类型:

    // Explicit unboxing
    int x = (int) (Integer) map.get("int");
    // Implicit unboxing
    int y = (Integer) map.get("int");
    // USing a method from Number instead
    int z = ((Integer) map.get("int")).intValue();
    
  4. # 4 楼答案

    当您将原语放入Java中的Map中时,它们将自动装箱到对象形式中。例如,如果将Map定义为:

    Map<Integer, String> myMap = new HashMap<Integer, String>();
    

    然后您可以使用int类型的原语,因为它们将自动装箱到Integer

    至于你最初的问题,将Map定义为:

    // using Integer for key type, can be something else
    Map<Integer, Object> myMap = new HashMap<Integer, Object>();
    

    然后,您应该能够在映射中放置任何Java对象