如何有一個從minValueRange索引的數組?
你不能在Java中。最好的辦法就是做必要的數學(但我提幾個選擇以下,這實際上只是將其封裝),例如:
int minValForRange = myDataObj.getMinValue();
int maxValForRange = myDataObj.getMaxValue();
String[] arrOfRangesForSelection = new String[maxValForRange - minValForRange + 1];
// Enough room for the range (inclusive) -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Logger.d(String.valueOf(minValForRange));
Logger.d(String.valueOf(maxValForRange));
for (int i = minValForRange; i <= maxValForRange; i++) {
arrOfRangesForSelection[i - minValForRange] = String.valueOf(i);
// The math ------------^^^^^^^^^^^^^^^^^^
}
(注意,我假設maxValForRange
以上應該包括在內,因爲這是你怎麼寫你的循環,這就是爲什麼我們在線路分配陣列具有+ 1
。)
如果沒有希望maxValForRange
被列入(在編程中,我們通常包括下限但不包括上限),你不會對數組分配+ 1
,並會在循環使用<
而不是<=
:
int minValForRange = myDataObj.getMinValue();
int maxValForRange = myDataObj.getMaxValue();
String[] arrOfRangesForSelection = new String[maxValForRange - minValForRange];
// No + 1 here --------------------------------------------------------------^
Logger.d(String.valueOf(minValForRange));
Logger.d(String.valueOf(maxValForRange));
for (int i = minValForRange; i < maxValForRange; i++) {
// Just < here ----------------^
arrOfRangesForSelection[i - minValForRange] = String.valueOf(i);
}
如果你願意,你可以平凡寫一個類,將提供get
和set
方法,其做必要的數學計算,這樣你就不必在整個代碼中重複它,然後將你的數組包裝到該類中。
你也可以做一個ArrayList
子類,做必要的數學。
你需要有大小MAXVALUE + 1的陣列,因此將有最大價值指數 – NightsWatch
另取您的要求可能是使用某種形式的地圖風格的集合。有一個有趣的討論,和一些建議的解決方案,[這裏](0123)http://stackoverflow.com/questions/12626135/memory-efficient-sparse-array-in-java – fvu