更改数组的索引值

时间:2013-04-15 02:45:14

标签: java arrays indexing

我想知道是否有可能改变java数组用作索引的值,而不是

Fruit[0] = orange

你可以

Fruit[orange] = orange

3 个答案:

答案 0 :(得分:5)

这类似于Perl等语言中的associative array表示法。在Java中,它们由Maps表示:

Map<String, String> fruitMap = new HashMap<>();
fruitMap.put("orange", "orange");

答案 1 :(得分:1)

实际上java只接受(非负)整数作为其索引,实现“字符串”,可以使用Map。这是使用Map:using Map的示例。或者,如果您仍想使用数组,则可以使用枚举:java enum tutorial

答案 2 :(得分:1)

(我假设orange是字符串或枚举或其他对象类型......)

  

我想知道是否有可能改变java数组用作索引的值...

没有。这是不可能的

Java数组的索引类型为int。这是从基础层面“融入”Java语言设计和JVM设计。即使使用long值作为数组索引或数组大小,在Java中也不可能包括Java 8。

仅仅更改Java以允许long数组索引将是一项艰巨的任务。而且我认为如果不破坏大量现有应用程序就无法完成。例如,可能有数百万行已部署的Java代码假定array.length可以分配给int


幸运的是,Java以Map接口及其实现类的形式提供了相应的功能。唯一缺少的是“语法糖”,它会使Map访问看起来像普通的Java数组访问。