我嘗試使用以下行來從ConcurrentSkipListMap鍵的數組:的Java ConcurrentSkipListMap ketset數組
myArray=(String[])myMap.keySet().toArray(new String[myMap.size()]);
但它沒有工作,結果數組中的所有項目一樣,爲什麼?
我嘗試使用以下行來從ConcurrentSkipListMap鍵的數組:的Java ConcurrentSkipListMap ketset數組
myArray=(String[])myMap.keySet().toArray(new String[myMap.size()]);
但它沒有工作,結果數組中的所有項目一樣,爲什麼?
這按預期工作:
Map<String, String> myMap = new ConcurrentSkipListMap<>();
myMap.put("a", "b");
myMap.put("b", "c");
String[] myArray= myMap.keySet().toArray(new String[myMap.size()]);
System.out.println(Arrays.toString(myArray));
和輸出:
[a, b]
注意,這不是原子,所以如果您的地圖調用size
和toArray
之間修改,下面會發生:
myArray
會有一個大小比你在new String[myMap.size()]
myArray
將包含null項目因此,它可能是有道理的呼叫保存到size
,避免了(可能是數組大在這種情況下)不必要的數組創建和簡單的使用:
String[] myArray= myMap.keySet().toArray(new String[0]);
你可以試試這個:
ConcurrentSkipListMap myMap = new ConcurrentSkipListMap();
myMap.put("3", "A");
myMap.put("2", "B");
myMap.put("1", "C");
myMap.put("5", "D");
myMap.put("4", "E");
Object[] myArray = myMap.keySet().toArray();
System.out.println(Arrays.toString(myArray));
結果將是:
[1,2,3,4,5]
怎麼又是你的地圖宣稱,這是怎麼myArray的聲明?什麼不起作用(編譯器錯誤?異常?)?等等 – assylias