概述
Index.java
package com.test.coll;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Random;
public class Index {
public static void main(String[] args) {
System.out.println("---------排序前---------");
ArrayList<HashMap<String, String>> al = Index.getRondomData();
for (HashMap<String, String> hm : al) {
System.out.println(hm.get("key") + ":" + hm.get("value"));
}
System.out.println("---------排序后---------");
Collections.sort(al, new MySort(false, true, "key"));
for (HashMap<String, String> hm : al) {
System.out.println(hm.get("key") + ":" + hm.get("value"));
}
}
public static ArrayList<HashMap<String, String>> getRondomData() {
ArrayList<HashMap<String, String>> al = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < 10; i++) {
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("key", (new Random()).nextInt(100) + "");
hm.put("value", (new Random()).nextInt(100) + "");
al.add(hm);
}
return al;
}
}
MySort.java
package com.test.coll;
import java.util.Comparator;
import java.util.HashMap;
public class MySort implements Comparator<HashMap<String, String>> {
private boolean isAsc; // 是否为升序,true:升序,false:降序
private boolean isNum; // 排序value是否为数值型
private String key; // 根据哪个key排序
public MySort(boolean isAsc, boolean isNum, String key) {
this.isAsc = isAsc;
this.isNum = isNum;
this.key = key;
}
@Override
public int compare(HashMap<String, String> hashMap1,
HashMap<String, String> hashMap2) {
String v1 = hashMap1.get(this.key);
String v2 = hashMap2.get(this.key);
if (!isNum) {
return isAsc ? (v1.compareTo(v2)) : (v2.compareTo(v1));
} else {
if (Double.parseDouble(v1) > Double.parseDouble(v2)) {
return isAsc ? 1 : -1;
}else if(Double.parseDouble(v1) < Double.parseDouble(v2)) {
return isAsc ? -1 : 1;
}else {
return 0;
}
}
}
}
最后
以上就是怕黑金毛为你收集整理的ArrayList存放HashMap排序方法的全部内容,希望文章能够帮你解决ArrayList存放HashMap排序方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复