2013-04-15 87 views
0

我想知道是否有可能改变什么样的价值的Java数组使用它作为索引,以便而不必更改数组

Fruit[0] = orange 

的指数值,你可以有

Fruit[orange] = orange 

回答

1

其实java的只接受(非负)整数其指数,实现“串”,你可以使用地图。这是使用Map:using Map的示例。或者,如果你仍然想使用数组,你可以使用枚举:java enum tutorial

5

这与Perl等语言中的associative array表示法类似。在Java中,他们被Maps表示:

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

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

我在想,如果它是可以改变什么样的价值的Java数组使用它作为指数...

号这是不可能

类型的Java数组的索引是int。这从根本上“融入”了Java语言设计和JVM设计。即使使用long作为数组索引或数组大小,在Java中也不可能实现,包括Java 8在内。

只是将Java更改为允许long数组索引将是一项艰巨的任务。我认为不破坏大量现有应用程序就可以做到。例如,可能会有数百万行部署的Java代码假设array.length可以分配给int


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