簡體   English   中英

按鍵升序排序arraylist

[英]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升序對列表進行排序。 我無法做到這一點。 我真的很感激任何幫助。

我正在添加idamt 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());
        }
    });

查看TreeMap API文檔

你的問題不是很清楚,因為在某些時候你似乎提到只用一個元素(你的地圖)排序一個列表。 但我假設你想要對該地圖中的鍵進行排序(在地圖內部或將它們全部添加到某個列表之后)。

但是,對於排序列表,您有Collections.sort() ,它可以依賴於自然順序(如果元素實現Comparable )或自定義Comparator 此外,如果要在添加/刪除元素時維護訂單,可以查看SortedSet (和TreeSet實現)。

為了維護帶有序鍵的映射,你有SortMap (有一個值得注意的實現: TreeMap ),它將確保它隨時保留的順序 - 你可以隨機添加元素,每當你迭代時你都會得到密鑰訂購。 同樣,順序可以是自然順序(由Comparable.compareTo提供),也可以通過實現Comparator接口提供自定義順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM