Java可以使用字符串作为索引数组键吗?(例如:数组[";a";]=1;)

Java可以使用字符串作为索引数组键吗?(例如:数组[";a";]=1;),java,arrays,map,Java,Arrays,Map,Java可以使用字符串作为索引数组键吗?例如: array["a"] = 1; 没有 要做这样的事情,你必须使用地图 Map<String, Integer> aMap = new HashMap<String, Integer>(); aMap.put("a" , Integer.valueOf(1)); Map aMap=newhashmap(); aMap.put(“a”,整数值(1)); 不,那将是Java中的一个问题 (类型应为Map)否-您需要一个映射来执

Java可以使用字符串作为索引数组键吗?例如:

array["a"] = 1;
没有

要做这样的事情,你必须使用地图

Map<String, Integer> aMap = new HashMap<String, Integer>();
aMap.put("a" , Integer.valueOf(1));
Map aMap=newhashmap();
aMap.put(“a”,整数值(1));
不,那将是Java中的一个问题


(类型应为
Map

否-您需要一个映射来执行此操作:

Map<String, Integer> map = new HashMap<>();
map.put("a", 2);
只能对数组使用方括号语法,而不能对任何集合使用方括号语法。比如:

int val = map["a"]; //Compile error

将永远是非法的。您必须使用
get()
方法。

不,他们不能。但是他们可以使用字符,字母表的ASCII值将用作键索引

考虑

    String[] a = new String['a' + 1];
    a['a'] = "Hello";
    int[] b = new int['a' + 3];
    b['c'] = 5;

    System.out.println(a[97]);
    System.out.print(b[99]);
这将输出

Hello
5

+1,但不能使用
Integer.valueOf(1)
,因为实际上并不需要新的
Integer
实例?实际上,您可以使用常量
1
,而不是不必要的包装,对吗?@mre不使用常量的唯一好处是,当引入自动装箱时,它将适用于1.5之前的版本。对于所有现代版本,尽管我同意常数会更好!那么像array[“a”][“b”]这样的多维数组呢?如果你要否决这个答案,那么我想知道为什么你的数组大小为98以存储两个值,而99(对于“c”)超出了范围。但是,对于如此简单的东西,数组确实很大,问题在于Java是否可以使用字符串作为索引数组键,而不是它的效率。另外,“a”的ascii码是97,再加上3,数组b的大小就达到100。由于“c”的ascii码是99,因此可以访问数组第99个索引处的值,而无需抛出任何
IndexOutOfBoundsException
s。如果你没有更多的保留意见,请撤销你的否决票,这样这个答案对其他读者也会有用,即使仅仅从纯教育的角度来看,尽管变通方法在技术上是一个解决方案,但在10000个案例中,这个建议是一个非常非常非常非常糟糕的建议。我建议你发表一个严肃的声明,否则你将继续被否决。注:我个人没有投你反对票。但我就差这么一点了,只是想指出:OP想知道数组是否可以用字符串作为索引,而不是字符。
Hello
5