【发布时间】:2011-06-26 23:22:54
【问题描述】:
我想知道 Java 中的数组是否可以做这样的事情:
int[] a = new int[10];
a["index0"] = 100;
a["index1"] = 100;
我知道我在其他语言中看到过类似的功能,但我并不真正熟悉任何细节......只是有一些方法可以将值与字符串常量相关联,而不仅仅是数字索引。有没有办法在 Java 中实现这样的事情?
【问题讨论】:
我想知道 Java 中的数组是否可以做这样的事情:
int[] a = new int[10];
a["index0"] = 100;
a["index1"] = 100;
我知道我在其他语言中看到过类似的功能,但我并不真正熟悉任何细节......只是有一些方法可以将值与字符串常量相关联,而不仅仅是数字索引。有没有办法在 Java 中实现这样的事情?
【问题讨论】:
您需要的是java.util.Map<Key, Value> 接口及其以String 为键的实现(例如HashMap)
【讨论】:
HashMap 是更现代的版本。 Hashtable 是“旧版”之一(类似于 Vector/ArrayList)。
ArrayList 不是传统的。
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 是一个实现类; Map 是接口。我建议针对Map 接口进行编码,在这种情况下,这意味着将您的变量声明为Map 而不是HashMap。
我对 C++ 一无所知,但您可能正在寻找实现 the Map interface 的类。
【讨论】:
您在寻找HashMap<k,v>() 课程吗?请在此处查看javadocs。
粗略地说,用法是:
HashMap<String, int> a = new HashMap<String,int>();
a.put("index0", 100);
等等
【讨论】:
Map<String, Integer>;同样,最好将其声明为 Map 而不是 HashMap。
要使用字符串键存储内容,您需要一个 Map。您不能在地图上使用方括号。您可以在 C++ 中执行此操作,因为它支持运算符重载,但 Java 不支持。
有a proposal to add this syntax for maps,但会为Java 8 at the earliest添加。
【讨论】:
java 还没有关联数组。但是,您可以使用哈希映射作为替代。
【讨论】: