愿眼中星河不坠 2021-12-06 10:19 采纳率: 50%
浏览 61
已结题

这不去重还能用Treeset么?怎么让三个都排序啊

三.分析以下需求,并用代码实现:
(1)定义一个员工类Employee,包含三个属性:姓名(String name)、年龄(int age)、工资(int salary)
(2)创建5个对象装入TreeSet,按照工资从高到底排序输出结果(工资相同,按照年龄从低到高,工资和年龄都相同,
按照姓名长度升序,但是不能去重(姓名、年龄、工资都相同))

我用Treeset写实在想不出来怎么搞?

public class test03 {
    public static void main(String[] args) {
        Employee e1 = new Employee("烬", 26, 6300);
        Employee e2 = new Employee("小炮", 25, 3150);
        Employee e3 = new Employee("伊泽瑞尔", 25, 4800);
        Employee e4 = new Employee("vn", 25, 4800);
        Employee e5 = new Employee("vn", 25, 4800);
        
        TreeSet<Employee> set = new TreeSet<>(new Comparator<Employee>() {
            @Override
            public int compare(Employee o1, Employee o2) {
                //创建5个对象装入TreeSet,按照工资从高到底排序输出结果(工资相同,按照年龄从低到高,工资和年龄都相同,
                //按照姓名长度升序
                int result1=o2.getSalary()-o1.getSalary();//按照工资从高到底排序输出结果
                int result2=o1.getName().length()-o2.getName().length();
                result1=result1 ==0?o1.getAge()-o2.getAge():result1;
                result2=result2 ==0?o1.getName().length()-o2.getName().length():result1;//获取name长度
                return result2;
            }
        });
        set.add(e1);
        set.add(e2);
        set.add(e3);
        set.add(e4);
        set.add(e5);
        for (Employee employee : set) {
            System.out.println(employee);
        }

    }
}

  • 写回答

2条回答 默认 最新

  • 再写三行 2021-12-06 19:50
    关注
    
                 TreeSet<Employee> set = new TreeSet<>(new Comparator<Employee>() {
                @Override
                public int compare(Employee o1, Employee o2) {
                    //创建5个对象装入TreeSet,按照工资从高到底排序输出结果(工资相同,按照年龄从低到高,工资和年龄都相同,
                    //按照姓名长度升序
                    int salaryRes=o2.getSalary()-o1.getSalary();//工资
                    int ageRes=o1.getAge()-o2.getAge();//年龄
                    int nameRes = o1.getName().length()-o2.getName().length();//姓名
                    int res = (salaryRes==0?ageRes:salaryRes)==0?nameRes:(salaryRes==0?ageRes:salaryRes);
                    return res;
                }
            });
    

    逻辑有问题 我改了一下可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月6日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度