zoukankan      html  css  js  c++  java
  • collections.sort()使用时注意的问题

    问题描述:

    自定义排序一个List<Pair<Integer, Integer>>,根据pair的key由小到大排序,如果相同,则根据pair的value由大到小排序。

    最开始写的比较器如下:

    Collections.sort(list, new Comparator<Pair<Integer, Integer>>() {
                @Override
                public int compare(final Pair<Integer, Integer> o1, final Pair<Integer, Integer> o2) {
                    if(o1.getKey() != o2.getKey())
                        return o1.getKey() - o2.getKey();
                    else{
                        return o2.getValue() - o1.getValue();
                    }
                }
            });

    但是由于Pair的getKey()和getValue()方法返回的是Object对象,是不能直接比较两个对象的,这里耽误了好久- -。

    正确的写法是新建变量存储Pair的key和value值,再进行比较。

    Collections.sort(list, new Comparator<Pair<Integer, Integer>>() {
                @Override
                public int compare(final Pair<Integer, Integer> o1, final Pair<Integer, Integer> o2) {
                    int x1 = o1.getKey();
                    int y1 = o1.getValue();
                    int x2 = o2.getKey();
                    int y2 = o2.getValue();
                    if(x1 != x2)
                        return x1 - x2;
                    else{
                        return y2 - y1;
                    }
                }
            });
  • 相关阅读:
    15_门面模式
    14_责任链模式
    13_观察者模式
    12_状态模式
    11_策略模式
    10_命令模式
    09_适配器模式
    08_装饰者模式
    07_代理模式
    linux邮件服务器postfix配置实例
  • 原文地址:https://www.cnblogs.com/silentteller/p/12312528.html
Copyright © 2011-2022 走看看