【问题标题】:Does Java support associative arrays? [duplicate]Java 支持关联数组吗? [复制]
【发布时间】:2011-06-26 23:22:54
【问题描述】:

我想知道 Java 中的数组是否可以做这样的事情:

int[] a = new int[10];
a["index0"] = 100;
a["index1"] = 100;

我知道我在其他语言中看到过类似的功能,但我并不真正熟悉任何细节......只是有一些方法可以将值与字符串常量相关联,而不仅仅是数字索引。有没有办法在 Java 中实现这样的事情?

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    您需要的是java.util.Map<Key, Value> 接口及其以String 为键的实现(例如HashMap

    【讨论】:

    • @Foo: 不,HashMap 是更现代的版本。 Hashtable 是“旧版”之一(类似于 Vector/ArrayList)。
    • @Joachim: ArrayList 不是传统的。
    • 好的。我会尝试。谢谢你:)
    【解决方案2】:

    Java 数组无法做到这一点。听起来您想使用java.util.Map

    Map<String, Integer> a = new HashMap<String, Integer>();
    
    // put values into the map
    a.put("index0", 100); // autoboxed from int -> Integer
    a.put("index1", Integer.valueOf(200));
    
    // retrieve values from the map
    int index0 = a.get("index0"); // 100
    int index1 = a.get("index1"); // 200
    

    【讨论】:

    • 啊,就是这样.. hashmap 是吧?谢谢你:)
    • @Fugogugo: HashMap 是一个实现类; Map 是接口。我建议针对Map 接口进行编码,在这种情况下,这意味着将您的变量声明为Map 而不是HashMap
    【解决方案3】:

    我对 C++ 一无所知,但您可能正在寻找实现 the Map interface 的类。

    【讨论】:

    • aaah,,, 所以它确实存在。地图类。谢谢。我是java新手:)
    • @Fugogugo 由于您是 Java 新手,因此值得注意的是,您不能只将任何内容粘贴到地图中。如果您使用 TreeMap 实现 Comparable 接口所需的任何键。如果您使用 HashMap,请确保在放入映射的键上覆盖了 hashCode 和 equals 方法。但是,hashCode 和 equals 的默认实现在许多情况下就足够了。
    • 等等,什么??如此混乱的评论
    【解决方案4】:

    您在寻找HashMap&lt;k,v&gt;() 课程吗?请在此处查看javadocs

    粗略地说,用法是:

    HashMap<String, int> a = new HashMap<String,int>();
    a.put("index0", 100);
    

    等等

    【讨论】:

    • 地图不能使用原语。它必须是Map&lt;String, Integer&gt;;同样,最好将其声明为 Map 而不是 HashMap
    • 我已经尝试过了。是的,它不能使用原语。但这个概念是正确的。谢谢。 :)
    【解决方案5】:

    要使用字符串键存储内容,您需要一个 Map。您不能在地图上使用方括号。您可以在 C++ 中执行此操作,因为它支持运算符重载,但 Java 不支持。

    a proposal to add this syntax for maps,但会为Java 8 at the earliest添加。

    【讨论】:

    • @Andrew Coleson:啊,这是一个非常愚蠢的错字;抱歉,感谢您指出。固定。
    【解决方案6】:

    java 还没有关联数组。但是,您可以使用哈希映射作为替代。

    【讨论】:

      猜你喜欢
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2012-03-19
      • 2012-10-25
      • 2016-05-07
      相关资源
      最近更新 更多