java Compare
2015-10-21 11:40
387 查看
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);
}
}
相关文章推荐
- Java注解教程及自定义注解
- Eclipse内存配置
- 变量相加和常量相加的区别
- spring MVC @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- java 多线程(1) Thread.join()
- JAVA基础总结
- spring与mybatis三种整合方法
- ArrayList删除元素(remove())报错的原理与解决办法
- 从0开始学Java——从jsp到servlet转换的各种辅助元素介绍
- java中IO流基本常识。
- spring与mybatis三种整合方法
- java 环境搭建
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Cucumber java + Webdriver (4) 使用自动化测试的Page对象模式
- C3P0+Spring集成核心配置
- Java加密技术(七)——数字证书
- [转] Java多线程发展简史
- Java 多线程 并发编程
- 深入详解Struts2——struts.xml配置之Action配置详解
- Ubuntu下HBase安装过程