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("treeMap2="+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;//从大到小排序 } }
java集合 TreeMap 使用自然排序和定制排序
猜你喜欢
转载自blog.csdn.net/qq_21808961/article/details/75948311
今日推荐
周排行