[英]sort arraylist with key ascending
map = new LinkedHashMap<String, String>();
list = new ArrayList<HashMap<String, String>>();
map.put("id", id);
map.put("amt", amt);
list.add(map);
如何按照amt
升序對列表進行排序。 我無法做到這一點。 我真的很感激任何幫助。
我正在添加id
, amt
in循環。 如何用密鑰排序為amt
?
id=1,2,3,4,5
amt=1000,33333,77,9087,5432
只需使用 TreeMap
:
Map<String, String> map = new TreeMap<String, String>();
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
map.put("id", "id");
map.put("amd", "amd");
list.add(map);
System.out.println(list);
輸出:
[{amd=amd, id=id}]
現在,如果Id
是大寫並且amd
是小寫,那么你應該在構造函數中使用Comparator
覆蓋TreeMap
的默認行為(以確保字符串鍵的排序是正確的):
Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
你的問題不是很清楚,因為在某些時候你似乎提到只用一個元素(你的地圖)排序一個列表。 但我假設你想要對該地圖中的鍵進行排序(在地圖內部或將它們全部添加到某個列表之后)。
但是,對於排序列表,您有Collections.sort()
,它可以依賴於自然順序(如果元素實現Comparable
)或自定義Comparator
。 此外,如果要在添加/刪除元素時維護訂單,可以查看SortedSet
(和TreeSet
實現)。
為了維護帶有序鍵的映射,你有SortMap
(有一個值得注意的實現: TreeMap
),它將確保它隨時保留的順序 - 你可以隨機添加元素,每當你迭代時你都會得到密鑰訂購。 同樣,順序可以是自然順序(由Comparable.compareTo
提供),也可以通過實現Comparator
接口提供自定義順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.