[英]How do you sort numeric values stored in a hashmap then in an ArrayList in Java?
[英]java arraylist HashMap how to sort?
數組如何排序?
{"A"=1, "B"=1, "C"=3},
{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=11, "C"=2},
{"A"=1, "B"=2, "C"=2},
{"A"=1, "B"=1, "C"=11}
{"A"=1, "B"=1, "C"=2},
{"A"=1, "B"=1, "C"=3},
{"A"=1, "B"=1, "C"=11},
{"A"=1, "B"=2, "C"=2},
{"A"=1, "B"=11, "C"=2}
ArrayList mylist = new ArrayList();
Map<String,Integer> mMap = new HashMap<String,Integer>();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",3);
mylist.add(mMap);
mMap = new HashMap<String,Integer>();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap<String,Integer>();
mMap.put("A",1);
mMap.put("B",11);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap<String,Integer>();
mMap.put("A",1);
mMap.put("B",2);
mMap.put("C",2);
mylist.add(mMap);
mMap = new HashMap<String,Integer>();
mMap.put("A",1);
mMap.put("B",1);
mMap.put("C",11);
mylist.add(mMap);
定義自己的比較器,如下所示:
public class MyMapComparator implements Comparator<Map <String, Integer>>
{
@Override
public int compare (Map<String, Integer> o1, Map<String, Integer> o2)
{
int c;
c = o1.get ("A").compareTo(o2.get ("A"));
if (c != 0) return c;
c = o1.get ("B").compareTo(o2.get ("B"));
if (c != 0) return c;
return o1.get ("C").compareTo(o2.get ("C"));
}
}
然后使用它對您的列表進行排序:
Collections.sort (mylist, new MyComparator ());
您需要使用Collections.sort(list, comparator)
,其中Comparator<Map>
實現您的自定義比較邏輯
這是一個示例,說明如何對可編譯和運行的HashMaps的ArrayList進行排序-我找不到這樣的示例-因此,除非我從Dell mini上輕松進行剪切和粘貼操作,否則應該做到這一點。
import java.util.*;
import java.lang.*;
public class test {
public static class mySort implements Comparator<HashMap<String,Integer>> {
@Override
public int compare(HashMap<String, Integer> map1, HashMap<String, Integer> map2) {
return map1.get("number").intValue() - map2.get("number").intValue();
}
}
static void displayAL(ArrayList<HashMap> al) {
Iterator it = al.iterator();
HashMap<String,Integer> hm;
while (it.hasNext()) {
hm = (HashMap<String,Integer>)it.next();
System.out.println(hm.get("number"));
}
System.out.println();
}
public static void main(String[] args) {
ArrayList<HashMap> al = new ArrayList<HashMap>();
HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("number",10);
al.add(hm);
hm = new HashMap<String,Integer>();
hm.put("number",2);
al.add(hm);
hm = new HashMap<String,Integer>();
hm.put("number",0);
al.add(hm);
hm = new HashMap<String,Integer>();
hm.put("number",-3);
al.add(hm);
displayAL(al);
Collections.sort((ArrayList)al,new mySort());
System.out.println("sorted:\n");
displayAL(al);
}
}
rick@rick-jolicloud:~/javaProjects$ java test
10
2
0
-3
sorted:
-3
0
2
10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.