心情就像下雨天 2020-01-02 17:21 采纳率: 50%
浏览 192
已采纳

java排序算法----排序

两个list
1 用户list(size未知)
id name

001 张三
002 李四
003 王五

2 投标金额list (size未知)
用户id 积分
001 100
001 80
002 90
003 60
002 30

需要结果,根据用户投标金额从小到大进行排名,(李四报价最低30,所以为第一,王五的最低价为60,所以是第二,以此类推)

李四   排名 1
王五   排名 2
张三   排名 3
  • 写回答

3条回答 默认 最新

  • BestwishesTolover 2020-01-03 14:45
    关注
    
    ```Map<String,Object> map = new HashMap<>();
            map.put("001","张三");
            map.put("002","李四");
            map.put("003","王五");
            List<MyMoney> moneyList = new ArrayList<MyMoney>();
            MyMoney money1 = new MyMoney();
            money1.setCode("001");money1.setMoney(100);
            moneyList.add(money1);
            MyMoney money2 = new MyMoney();
            money2.setCode("001");money2.setMoney(80);
            moneyList.add(money2);
            MyMoney money3 = new MyMoney();
            money3.setCode("002");money3.setMoney(90);
            moneyList.add(money3);
            MyMoney money4 = new MyMoney();
            money4.setCode("003");money4.setMoney(60);
            moneyList.add(money4);
            MyMoney money5 = new MyMoney();
            money5.setCode("002");money5.setMoney(30);
            moneyList.add(money5);
    
            Collections.sort(moneyList, new Comparator<MyMoney>() {
                @Override
                public int compare(MyMoney o1, MyMoney o2) {
                    int m1 = o1.getMoney();
                    int m2 = o2.getMoney();
                    if (m1 > m2) {
                        return 1;
                    } else if (m1 == m2) {
                        return 0;
                    } else {
                        return -1;
                    }
                }
            });
    
            for(int i=0;i<moneyList.size();i++)
            {
                MyMoney news=(MyMoney)moneyList.get(i);
    
                System.out.println("code:"+map.get(news.getCode())+"  money:"+news.getMoney()+"  排名"+(i+1)+"\r\n");
    
            }
    

    下面是MyMoney对象类
    public class MyMoney {

    private String code;
    private Integer money;
    
    public MyMoney(){}
    
    public String getCode() {
        return code;
    }
    
    public void setCode(String code) {
        this.code = code;
    }
    
    public Integer getMoney() {
        return money;
    }
    
    public void setMoney(Integer money) {
        this.money = money;
    }
    

    }

    代码可以直接拿来用,我已测过,望采纳
    
    这是执行结果:
    code:李四  money:30  排名1
    
    code:王五  money:60  排名2
    
    code:张三  money:80  排名3
    
    code:李四  money:90  排名4
    
    code:张三  money:100  排名5
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀