java集合TreeMap使用自然排序,定制排序
2017-07-23 21:08
483 查看
import java.util.Comparator; import java.util.TreeMap; public class Demo3 { public static void main(String[] args) { System.out.println("使用自然排序:"); TreeMap<IdNumber2, String> treeMap=new TreeMap<IdNumber2,String>(); treeMap.put(new IdNumber2(1000), "王尼玛"); treeMap.put(new IdNumber2(1001), "万尼玛"); treeMap.put(new IdNumber2(1002), "蓝尼玛"); treeMap.put(new IdNumber2(1003), "冯尼玛"); treeMap.put(new IdNumber2(1004), "秦尼玛"); System.out.println("treeMap="+treeMap); System.out.println("使用定制排序:(从小到大排序)"); //使用钉子排序,指明比较器 TreeMap<IdNumber2, String> treeMap2= new TreeMap<IdNumber2,String>(new MyComparatorBigToSmall()); treeMap2.put(new IdNumber2(1000), "王尼玛"); treeMap2.put(new IdNumber2(1001), "万尼玛"); treeMap2.put(new IdNumber2(1002), "蓝尼玛"); treeMap2.put(new IdNumber2(1003), "冯尼玛"); treeMap2.put(new IdNumber2(1004), "秦尼玛"); System.out.println("treeMap2="+treeMap2); System.out.println("使用定制排序:(从大到小排序)"); TreeMap<IdNumber2, String> treeMap3= new TreeMap<IdNumber2,String>(new MyComparatorSmallToBig()); treeMap3.put(new IdNumber2(1000), "王尼玛"); treeMap3.put(new IdNumber2(1001), "万尼玛"); treeMap3.put(new IdNumber2(1002), "蓝尼玛"); treeMap3.put(new IdNumber2(1003), "冯尼玛"); treeMap3.put(new IdNumber2(1004), "秦尼玛"); System.out.println("treeMap3="+treeMap3); } } //自定义比较器:实现comparator接口 class MyComparatorBigToSmall implements Comparator<IdNumber2> //使用泛型 { @Override public int compare(IdNumber2 o1, IdNumber2 o2) { // TODO Auto-generated method stub return o1.getIdNumber()-o2.getIdNumber();//从小到大排序 } } class MyComparatorSmallToBig implements Comparator<IdNumber2> { @Override public int compare(IdNumber2 o1, IdNumber2 o2) { // TODO Auto-generated method stub return o2.getIdNumber()-o1.getIdNumber();//从小到大排序 } } //z作为键的类实现Comparable接口 class IdNumber2 implements Comparable<IdNumber2> { //成员属性 private int IdNumber; public int getIdNumber() { return IdNumber; } //构造函数 public IdNumber2() { // TODO Auto-generated constructor stub } //构造函数 public IdNumber2(int IdNumber) { this.IdNumber=IdNumber; } //重写toString()方法 @Override public String toString() { // TODO Auto-generated method stub return "["+this.IdNumber+"]"; } //重写equals()方法 @Override public boolean equals(Object obj) { if(obj==this)//自己和自己比较 return true;//那就是同一个相等了 //传入的引用不为空,而且两个的类型一样 if(obj!=null&&obj.getClass()==this.getClass()) { IdNumber2 idNumber2=(IdNumber2) obj;//类型转换 return this.IdNumber==idNumber2.IdNumber; //如果两个的编号一样,那就认为相等 } return false; } //重写hashCode()方法 @Override public int hashCode() { // TODO Auto-generated method stub return this.IdNumber*100; } //重写compareTo()方法实现自然排序 @Override public int compareTo(IdNumber2 o) { // TODO Auto-generated method stub //return this.IdNumber-o.IdNumber;//从小到大排序: return o.IdNumber-this.IdNumber;//从大到小排序 } }
结果:
使用自然排序:treeMap={[1004]=秦尼玛, [1003]=冯尼玛, [1002]=蓝尼玛, [1001]=万尼玛, [1000]=王尼玛}使用定制排序:(从小到大排序)treeMap2={[1000]=王尼玛, [1001]=万尼玛, [1002]=蓝尼玛, [1003]=冯尼玛, [1004]=秦尼玛}使用定制排序:(从大到小排序)treeMap3={[1004]=秦尼玛, [1003]=冯尼玛, [1002]=蓝尼玛, [1001]=万尼玛, [1000]=王尼玛}
相关文章推荐
- java-集合(6)-TreeSet,HashSet与TreeSet比较,HashMap,TreeMap只有在排序的功能时使用
- Java中的集合排序(自然排序 & 定制排序)
- Java集合对象的排序使用Collection.sort方法,先实现Comparable接口
- Java_集合操作_非稳定排序推荐使用List
- java TreeMap排序的使用
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- java如何对map进行排序详解(map集合的使用)
- java中使用TreeMap进行中文姓名排序
- java中list集合的内容,如何使用像数据库中group by形式那样排序
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
- Java基础知识强化之集合框架笔记44:Set集合之TreeSet保证元素唯一性和自然排序的原理和图解
- java如何对map进行排序详解(map集合的使用)
- JAVA中使用静态内部类Comparator实现集合的排序
- Java 使用TreeMap对学生对象的年龄进行升序排序。
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- java中如何使用TreeMap进行键值对排序
- 【java编程】Map集合之TreeMap按学生姓名进行升序排序
- java集合使用——TreeMap
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
- Java基础之TreeSet集合使用泛型、比较器排序示例: