2013-04-15 89 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數組訪問。