使用比较器的方式实现TreeSet集合元素的排序
创始人
2024-04-27 17:03:47
package com.javase.collection.set.treeset;import java.util.TreeSet;/*** TreeSet集合中的元素可排序的第二种方式:使用比较器的方式。** 结论:放到TreeSet或者TreeMap集合key部分的元素要想做到排序,包括两种方式:*      第一种:放到集合中的元素实现java.lang.Comparable接口。*      第二种:在构造/创建TreeSet或者TreeMap集合的时候给它传一个比较器Comparator对象。*             (可以创建一个比较器对象类,也可以使用匿名内部类)** Comparable和Comparator怎么选择呢?*      当比较规则不会发生改变的时候,或者说当比较规则只有一种的时候,建议实现Comparable接口。*      如果比较规则较多,并且多个比较规则之间需要频繁切换,建议使用Comparator接口。*/
public class TreeSetText04 {public static void main(String[] args) {
//        TreeSet wuGuis = new TreeSet<>();//这样不行,没有通过构造方法传递一个比较器
//        创建集合  给构造方法传一个比较器TreeSet wuGuis = new TreeSet<>(new WuGuiComparator());
//        也可以不写比较器类WuGuiComparator,使用匿名内部类直接new接口Comparator/*TreeSet w = new TreeSet<>(new Comparator() {@Overridepublic int compare(WuGui o1, WuGui o2) {return o1.getAge() - o2.getAge();}});*/
//        添加元素wuGuis.add(new WuGui(999));wuGuis.add(new WuGui(888));wuGuis.add(new WuGui(11111));wuGuis.add(new WuGui(666));wuGuis.add(new WuGui(55555));
//        遍历集合for (WuGui wuGui : wuGuis) {System.out.println(wuGui);}}
}
/*
输出结果:WuGui{age=666}WuGui{age=888}WuGui{age=999}WuGui{age=11111}WuGui{age=55555}*/
package com.javase.collection.set.treeset;/*** 乌龟类*/
public class WuGui {private int age;public WuGui() {}public WuGui(int age) {this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "WuGui{" +"age=" + age +'}';}
}
package com.javase.collection.set.treeset;import java.util.Comparator;/*** 乌龟比较器类*     需要实现java.util.Comparator接口*/
public class WuGuiComparator implements Comparator {@Overridepublic int compare(WuGui o1, WuGui o2) {return o1.getAge() - o2.getAge();//正序排列,反过来写就是倒序排列即return o2.getAge() - o1.getAge();}
}

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...