TreeSet课后习题
2021/9/28 23:10:47
本文主要是介绍TreeSet课后习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
TreeSet课后习题
package com.atguigu.exer1; import org.junit.Test; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; /** * 创建该类的5个对象,并把这些对象放入TreeSet集合中,分别按一下两种方式对集合中的元素进行排序。并遍历输出 * <p> * 1.使Employee实现Comparable接口,并按name排序 * 2.创建TreeSet时传入Comparator对象,按生日日期的先后排序 * * @author liangqichen * @create 2021-09-28 21:27 */ public class EmployeeTest { // 问题2 按生日日期的先后顺序 @Test public void test2() { TreeSet set = new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { if(o1 instanceof Employee && o2 instanceof Employee) { Employee e1 = (Employee) o1; Employee e2 = (Employee) o2; MyDate b1 = e1.getBirthday(); MyDate b2 = e2.getBirthday(); // 方式 一 // // 比较年 // int minusYear = b1.getYear() - b2.getYear(); // if(minusYear != 0){ // return minusYear; // } // // // 比较月 // int minMonth = b1.getMonth() - b2.getMonth(); // if(minMonth != 0){ // return minMonth; // } // // // 比较日 // return b1.getDay() - b2.getDay(); // } // 方式 二 : return b1.compareTo(b2); } return 0; } }); Employee e1 = new Employee("liudehua", 55, new MyDate(1965, 5, 4)); Employee e2 = new Employee("zhangxueyou", 43, new MyDate(1987, 5, 4)); Employee e3 = new Employee("guofucheng", 44, new MyDate(1987, 5, 9)); Employee e4 = new Employee("liming", 51, new MyDate(1954, 8, 12)); Employee e5 = new Employee("liangchaowei", 21, new MyDate(1958, 12, 4)); set.add(e1); set.add(e2); set.add(e3); set.add(e4); set.add(e5); Iterator iterator = set.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } // 问题1 使用自然排序 @Test public void test1() { TreeSet set = new TreeSet(); Employee e1 = new Employee("liudehua", 55, new MyDate(1965, 5, 4)); Employee e2 = new Employee("zhangxueyou", 43, new MyDate(1987, 5, 4)); Employee e3 = new Employee("guofucheng", 44, new MyDate(1987, 5, 9)); Employee e4 = new Employee("liming", 51, new MyDate(1954, 8, 12)); Employee e5 = new Employee("liangchaowei", 21, new MyDate(1958, 12, 4)); set.add(e1); set.add(e2); set.add(e3); set.add(e4); set.add(e5); Iterator iterator = set.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
package com.atguigu.exer1; /** * 定义一个Employee类。 * 该类包含:private成员变量name,age,birthday,其中birthday 为MayDate类的对象: * 并为每一个属性定义getter setter方法 * 并重写toString方法输出name age birthday * * @author liangqichen * @create 2021-09-28 21:23 */ public class Employee implements Comparable{ private String name; private int age; private MyDate birthday; public Employee() { } public Employee(String name, int age, MyDate birthday) { this.name = name; this.age = age; this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public MyDate getBirthday() { return birthday; } public void setBirthday(MyDate birthday) { this.birthday = birthday; } @Override public String toString() { return "Employee{" + "name='" + name + '\'' + ", age=" + age + ", birthday=" + birthday + '}'; } // 按照 name 的顺序排 @Override public int compareTo(Object o) { if(o instanceof Employee){ Employee e = (Employee) o; return this.name.compareTo(e.name); } // return 0; throw new RuntimeException("传入的数据类型不一致!"); } }
package com.atguigu.exer1; /** * MyDate类包含: * private成员变量year,month,day。并为每一个属性定义getter setter 方法。 * * @author liangqichen * @create 2021-09-28 21:20 */ public class MyDate implements Comparable{ private int year; private int month; private int day; public MyDate() { } public MyDate(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } @Override public String toString() { return "MyDate{" + "year=" + year + ", month=" + month + ", day=" + day + '}'; } @Override public int compareTo(Object o) { if (o instanceof MyDate) { MyDate m = (MyDate) o; // 比较年 int minusYear = this.getYear() - m.getYear(); if (minusYear != 0) { return minusYear; } // 比较月 int minMonth = this.getMonth() - m.getMonth(); if (minMonth != 0) { return minMonth; } // 比较日 return this.getDay() - m.getDay(); } throw new RuntimeException("传入的数据类型不一致!!"); } }
这篇关于TreeSet课后习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南