Kal*_*Kal 77

没有.

要做这样的事情,你必须使用Map.

Map<String, Integer> aMap = new HashMap<String, Integer>();
aMap.put("a" , Integer.valueOf(1));
Run Code Online (Sandbox Code Playgroud)

  • +1,但是你不能使用`Integer.valueOf(1)`因为一个新的`Integer`实例不是真的需要吗?实际上,你可以使用常量`1`而不是不必要的包装,对吧? (6认同)
  • @mre是不使用常量的唯一优点是它可以在引入自动装箱时使用1.5之前的版本.对于所有现代版本,虽然我同意常量会更好! (3认同)

Mic*_*rry 39

不 - 你想要一张地图来做到这一点:

Map<String, Integer> map = new HashMap<>();
map.put("a", 2);
Run Code Online (Sandbox Code Playgroud)

然后得到它:

int val = map.get("a"); //2
Run Code Online (Sandbox Code Playgroud)

您只能对数组使用方括号语法,而不能对任何集合使用方括号语法.所以类似于:

int val = map["a"]; //Compile error
Run Code Online (Sandbox Code Playgroud)

永远是非法的.你必须使用这种get()方法.


Joh*_*iss 15

不,那将是Java中的Map.

(类型将是Map<String,Integer>.)


goo*_*ify 6

不,他们不能.但是他们可以使用字符将字母表的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]);
Run Code Online (Sandbox Code Playgroud)

这将输出

Hello
5
Run Code Online (Sandbox Code Playgroud)

  • 只是想指出:OP想知道数组是否可以将String作为索引而不是字符. (4认同)
  • 如果你打算回答这个问题,那么我想知道为什么 (2认同)