package com.study.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
public class MyCompare {
private static class MyComparator implements Comparator<HashMap<?, ?>> {
private String mSortingKey;
public MyComparator(String sortingKey) {
mSortingKey = sortingKey;
}
public void setSortingKey(String sortingKey) {
mSortingKey = sortingKey;
}
public int compare(HashMap<?, ?> map1, HashMap<?, ?> map2) {
Object value1 = map1.get(mSortingKey);
Object value2 = map2.get(mSortingKey);
/*
* This should never happen, but just in-case, put non-comparable
* items at the end.
*/
if (!isComparable(value1)) {
return isComparable(value2) ? 1 : 0;
} else if (!isComparable(value2)) {
return -1;
}
return ((Comparable) value1).compareTo(value2);
}
private boolean isComparable(Object value) {
return (value != null) && (value instanceof Comparable);
}
}
public static void main(String[] args) {
List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
HashMap map1=new HashMap();
map1.put("pinyin", "zg");
HashMap map2=new HashMap();
map2.put("pinyin", "anquan");
HashMap map3=new HashMap();
map3.put("pinyin", "rb");
HashMap map4=new HashMap();
map4.put("pinyin", "meiguo");
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
Collections.sort(list, new MyComparator("pinyin"));
System.out.println(list);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
public class MyCompare {
private static class MyComparator implements Comparator<HashMap<?, ?>> {
private String mSortingKey;
public MyComparator(String sortingKey) {
mSortingKey = sortingKey;
}
public void setSortingKey(String sortingKey) {
mSortingKey = sortingKey;
}
public int compare(HashMap<?, ?> map1, HashMap<?, ?> map2) {
Object value1 = map1.get(mSortingKey);
Object value2 = map2.get(mSortingKey);
/*
* This should never happen, but just in-case, put non-comparable
* items at the end.
*/
if (!isComparable(value1)) {
return isComparable(value2) ? 1 : 0;
} else if (!isComparable(value2)) {
return -1;
}
return ((Comparable) value1).compareTo(value2);
}
private boolean isComparable(Object value) {
return (value != null) && (value instanceof Comparable);
}
}
public static void main(String[] args) {
List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
HashMap map1=new HashMap();
map1.put("pinyin", "zg");
HashMap map2=new HashMap();
map2.put("pinyin", "anquan");
HashMap map3=new HashMap();
map3.put("pinyin", "rb");
HashMap map4=new HashMap();
map4.put("pinyin", "meiguo");
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
Collections.sort(list, new MyComparator("pinyin"));
System.out.println(list);
}
}