2010-10-16 122 views
2
ArrayList<HashMap<String, String>> 
arrayListRowsFirst = new ArrayList<HashMap<String, String>>(); 

今天,當我正在瀏覽一段代碼時,這段代碼讓我想起了一段時間。以下是我對這個聲明的一些疑問。Arraylist中的HashMap

  1. 如果必須將一個HashMap追加到一個ArrayList中,可能會有什麼要求。
  2. ArrayList排序過程中會發生什麼,它將如何去,需要很長時間。

回答

5

首先,在我看來「通用鏈」是一個不好的做法。我鼓勵將HashMap封裝在封裝數據的類中,允許將操作邏輯放在類中,而不是到處散佈。

要回答#1,我可以考慮一些場景。例如,您可能有語言,將某些常量映射到其他翻譯。事實上,它在標識符中表示第一行,這讓我認爲它可能是某種數據矩陣,而且第一個String參數將存在於列表中的所有條目中(實際上的確很糟糕) 編輯:我誤解了你的意思問題出現了。您可以像其他任何條目一樣添加它。查看示例代碼的其他人的答案。 :-)

要回答#2,除非您能夠提供一個比較器,否則您將無法對ArrayList排序,在這一點上它取決於您如何排序(可能是大小,可能是數值可能是Math.random(),取決於編寫比較器的人)。

1

將一個HashMap追加到ArrayList沒有「特殊要求」。

而且既不Map也不HashMap實現Comparable,所以如果要排序的ArrayList中,你必須創建自己的Comparator

排序在List其中包含Map將完全相同作爲排序List其中包含任何其他內容。

1

你是什麼意思「將HashMap附加到ArrayList」?您添加包含HashMap到ArrayList你的任何對象添加到列表

HashMap<String,String> hm = new HashMap<String,String>(); 
arrayListRowsFirst.add(hm); 

你喜歡你解決任何其他類型的數組列表的方式 - 你需要定義一個比較的兩個HashMaps這樣一比較,並使用Collections.sort與比較器。需要多長時間將取決於您如何比較HashMaps。

1
  1. ,就像您任何其他對象,使用方法add()您將添加包含HashMap到ArrayList。顯然它需要是正確的類型,在這種情況下是一個字符串的HashMap。

  2. 您需要創建一個比較器,以便您的HashMap可以排序。

1

聲明應該是

List<Map<String, String>> 

1到地圖添加到列表中,你只是做

Map<String, String> map = new HashMap<String, String>(); 
list.add(map); 

2對列表進行排序,你會需要一種方法來告訴我們,如果一個地圖是「大於」,「小於」或「等於」另一個地圖。根據您的需要,可能需要或可能不需要很長時間。它不需要很長時間。