心情就像下雨天 2020-01-02 17:21 采纳率: 0%
浏览 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
  • 写回答

4条回答 默认 最新

  • 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
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)