As Dott Bo ttstein說一個HashMap可能是你正在尋找的。我將使用LinkedHashMap,因爲LinkedHashMaps保持原始順序,而HashMaps根本不保證順序。
這裏是你可以做什麼:
Map<String, String> resultMap = new LinkedHashMap<String, String>();
for (int i = 0; i < nodeList.getLength(); i++) {
String deviceID = nodeList.item(i).getFirstChild().getNodeValue();
String descripcion = nodeList.item(i).getAttributes().getNamedItem("name").toString();
resultMap.put(deviceID, descripcion);
}
//ok, lets print out what's in the Map
Iterator<String> iterator = resultMap.keySet().iterator();
while(iterator.hasNext()){
String deviceID = iterator.next();
String descripcion = resultMap.get(key);
System.out.println(deviceID + ", " + descripcion);
}
Maps have the big advantage that afterwards you can look up a descripcion very quickly if you have the deviceID.
如果你真的想要一個ArrayList你能做到這一點有兩種方式:
1)的String []與陣列的一個ArrayList的2
static int DEVICE_ID = 0;
static int DESCRIPCION = 1;
List<String[]> result = new ArrayList<String[]>();
for (int i = 0; i < nodeList.getLength(); i++) {
String[] vehicleArray = new String[2];
vehicleArray[DEVICE_ID] = nodeList.item(i).getFirstChild().getNodeValue();
vehicleArray[DESCRIPCION] = nodeList.item(i).getAttributes().getNamedItem("name").toString();
result.add(vehicleArray);
}
長度或2),你可以創建一個類來保持車輛的數據:
class Vehicle{
String deviceID;
String descripcion;
public Vehicle(String deviceID, String descripcion){
this.deviceID = deviceID;
this.descripcion = descripcion;
}
}
然後創建車輛實例的列表:
List<Vehicle> result = new ArrayList<Vehicle>();
for (int i = 0; i < nodeList.getLength(); i++) {
String deviceID = nodeList.item(i).getFirstChild().getNodeValue();
String descripcion = nodeList.item(i).getAttributes().getNamedItem("name").toString();
result.add(new Vehicle(deviceID, descripcion));
}
最後你可能真的想保持的ID爲長數字而不是字符串。這對HashMap
或List<Vehicle>
的想法不是問題,但它不適用於List<String[]>
想法。 HashMaps可以很好地處理Long的關鍵。關鍵必須是一個長對象,但Java會自動將長對象轉換爲長對象,因此您甚至不必考慮它,只需將一個長基元設置爲關鍵字並且它將起作用。
HashMap更合適。 –
我盡了最大的努力來解決這個問題,但在我看來如此困難,如果有人能幫助我,我將非常感激。我怎麼可以嘗試使用HashMap? –
我希望其中的一個回答你的問題。如果是這樣,我們會很高興接受它!謝謝。 – mwarren