对TreeSet集合自定义排序
来源:互联网 发布:安卓壁纸软件 编辑:程序博客网 时间:2024/06/04 18:56
一:TreeSet定制排序
构建 对象 Animal
public class Animal { private Integer age; private String name; public Animal(Integer age, String name) { this.age = age; this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
实现Comparator接口
class MyComparator implements Comparator { // 实现compare方法 @Override public int compare(Object o1, Object o2) { if (o1 instanceof Animal && o2 instanceof Animal) { Animal a1 = (Animal)o1; Animal a2 = (Animal)o2; if (a1.getAge() > a2.getAge()) { return 1; } if (a1.getAge() < a2.getAge()) { return -1; } } return 0; }}创建对象,构建
public static void main(String[] args) { //创建TreeSet集合对象时,提供一个一个Comparator对象, TreeSet<Animal> set = new TreeSet<Animal>(new MyComparator()); /** * 要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象, * 该对象里负责集合元素的排序逻辑; */ set.add(new Animal(2, "狗")); set.add(new Animal(12, "猪")); set.add(new Animal(5, "猫")); set.add(new Animal(1, "鸡")); System.out.println(JSON.toJSONString(set));}排序结果 :
[{"age":1,"name":"鸡"},{"age":2,"name":"狗"},{"age":5,"name":"猫"},{"age":12,"name":"猪"}]
二:TreeSet的自然排序:
步骤:
1.让元素自身具备比较性,
2.实现Compareable接口,覆盖其CompareTo方法
public class Student implements Comparable{ private String name; private Integer age; private String sex; public Student(String name, Integer age, String sex) { this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public int compareTo(Object obj) { if (!(obj instanceof Student)) { throw new RuntimeException("不是该对象"); } Student student = (Student)obj;// 当前对象的年龄与插入对象的年龄进行比较,当前年龄大于插入对象的年龄时,返回1,// 此时将插入二叉树的右边,当等于时,返回0,进行次要条件的比较,再次调用;当小于时,返回-1; if (this.age > student.age) { return 1; } if (this.age == student.age) { return this.name.compareTo(student.name); } return -1; }}
public static void main(String[] args) { TreeSet treeSet = new TreeSet(); treeSet.add(new Student("张三", 23, "男")); treeSet.add(new Student("李四", 48, "女")); treeSet.add(new Student("王五", 26, "女")); treeSet.add(new Student("赵六", 18, "男")); System.out.println(JSON.toJSONString(treeSet));}结果:
[{"age":18,"name":"赵六","sex":"男"},{"age":23,"name":"张三","sex":"男"},{"age":26,"name":"王五","sex":"女"},{"age":48,"name":"李四","sex":"女"}]
阅读全文
0 0
- 对TreeSet集合自定义排序
- TreeSet对自定义类排序
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- TreeSet集合排序原理
- TreeSet集合内部排序
- TreeSet集合添加自定义类的自然排序实例
- TreeSet集合添加自定义类的定制排序实例
- 【集合详解】TreeSet源码解析及自定义排序
- TreeSet实现自定义排序
- TreeSet自定义排序
- java集合(TreeSet 定制排序)
- 【Java】Treeset实现自定义排序
- TreeSet 为自定义类排序
- TreeSet集合,可排序的集合
- 黑马程序员------TreeSet集合框架存储自定义元素之排序Comparable与Comparator
- Java 往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
- 黑马程序员对TreeSet集合中的元素排序的两种方式
- 集合框架_TreeSet的add()方法源码再次解读和TreeSet对元素排序的总结
- python3如何将input输入的字符串转化为表达式并计算出结果
- SpringBoot入门一
- JavaScript的不同弹话框
- echarts 3 动态显示最近一天数据,以分为单位获取数据点
- React TextBox state
- 对TreeSet集合自定义排序
- caffe--detection--python--select-search
- 安卓okhttp网络封装
- 欢迎使用CSDN-markdown编辑器
- 一小时入门 Python 3 网络爬虫-转载
- AutoEncoder与VAE
- 如何设计一个小而美的秒杀系统
- android 3.0 升级之后 SVG vector报错 以及解决办法
- 【图像处理基础】滤波器篇