愿眼中星河不坠 2021-12-06 02: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 11: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月16日
  • 已采纳回答 12月9日
  • 创建了问题 12月6日

悬赏问题

  • ¥20 双硬盘安装Ubuntu后windows 无法挂载硬盘
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数