zoukankan      html  css  js  c++  java
  • java 集合存储对象且根据对象属性排序

    方法一:根据java1.8lambda表达式进行排序

    Comparator<RateInfo> comparator = (t1, t2) -> t1.getRateCode().compareTo(t2.getRateCode());

    方法二:使用List的方法sort()排序

    List API:default void sort(Comparator<? super E> c)

    其实也是依据Comarator这个类

    rateInfolist.sort(comparator.reversed());

    方法三:使用Collections类的sort进行排序

    static <T> void sort(List<T> list, Comparator<? super T> c)

    Sorts the specified list according to the order induced by the specified comparator.
    谷歌翻译:根据指定比较器引发的顺序对指定列表进行排序。
    其实该排序也是使用Comparator类进行排序
    Comparator类API:英文翻译即可
    int     compare(T o1, T o2)
    Compares its two arguments for order.
    static <T,U extends Comparable<? super U>>
    Comparator<T>     comparing(Function<? super T,? extends U> keyExtractor)
    Accepts a function that extracts a Comparable sort key from a type T, and returns a Comparator<T> that compares by that sort key.
    static <T,U> Comparator<T>     comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
    Accepts a function that extracts a sort key from a type T, and returns a Comparator<T> that compares by that sort key using the specified Comparator.
    static <T> Comparator<T>     comparingDouble(ToDoubleFunction<? super T> keyExtractor)
    Accepts a function that extracts a double sort key from a type T, and returns a Comparator<T> that compares by that sort key.
    static <T> Comparator<T>     comparingInt(ToIntFunction<? super T> keyExtractor)
    Accepts a function that extracts an int sort key from a type T, and returns a Comparator<T> that compares by that sort key.
    static <T> Comparator<T>     comparingLong(ToLongFunction<? super T> keyExtractor)
    Accepts a function that extracts a long sort key from a type T, and returns a Comparator<T> that compares by that sort key.
    boolean     equals(Object obj)
    Indicates whether some other object is "equal to" this comparator.
    static <T extends Comparable<? super T>>
    Comparator<T>     naturalOrder()
    Returns a comparator that compares Comparable objects in natural order.
    static <T> Comparator<T>     nullsFirst(Comparator<? super T> comparator)
    Returns a null-friendly comparator that considers null to be less than non-null.
    static <T> Comparator<T>     nullsLast(Comparator<? super T> comparator)
    Returns a null-friendly comparator that considers null to be greater than non-null.
    default Comparator<T>     reversed()
    Returns a comparator that imposes the reverse ordering of this comparator.
    static <T extends Comparable<? super T>>
    Comparator<T>     reverseOrder()
    Returns a comparator that imposes the reverse of the natural ordering.
    default Comparator<T>     thenComparing(Comparator<? super T> other)
    Returns a lexicographic-order comparator with another comparator.
    default <U extends Comparable<? super U>>
    Comparator<T>     thenComparing(Function<? super T,? extends U> keyExtractor)
    Returns a lexicographic-order comparator with a function that extracts a Comparable sort key.
    default <U> Comparator<T>     thenComparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)
    Returns a lexicographic-order comparator with a function that extracts a key to be compared with the given Comparator.
    default Comparator<T>     thenComparingDouble(ToDoubleFunction<? super T> keyExtractor)
    Returns a lexicographic-order comparator with a function that extracts a double sort key.
    default Comparator<T>     thenComparingInt(ToIntFunction<? super T> keyExtractor)
    Returns a lexicographic-order comparator with a function that extracts a int sort key.
    default Comparator<T>     thenComparingLong(ToLongFunction<? super T> keyExtractor)
    Returns a lexicographic-order comparator with a function that extracts a long sort key.

    代码:

    Collections.sort(rateInfolist, Comparator.comparing(RateInfo::getRateCode));

    方法四:使用Comparator的匿名对象类重写compare方法

    代码:

    Collections.sort(rateInfolist, new Comparator<RateInfo>(){
                        /*
                         * int compare(RateInfo R1, RateInfo R2) 返回一个基本类型的整型,
                         * 返回负数表示:R1 小于R2,
                         * 返回0 表示:R1和R2相等,
                         * 返回正数表示:R1大于R2
                         */
                        public int compare(RateInfo R1, RateInfo R2) {
                            Integer rateCode1 = Integer.parseInt(R1.getRateCode());
                            Integer rateCode2 = Integer.parseInt(R2.getRateCode());
                            //按照RateCode的年龄进行升序排列
                            if(rateCode1 > rateCode2){
                                return 1;
                            }
                            if(rateCode1 == rateCode2){
                                return 0;
                            }
                            return -1;
                        }
                    });

    自己写代码时遇到的问题,根据我的理解和网上的资料做的总结

  • 相关阅读:
    Python全栈day19(函数补充)
    Python全栈day18(三元运算,列表解析,生成器表达式)
    Python全栈day18(迭代器协议和for循环工作机制)
    KVM虚拟化
    Python使用函数实现把字符串转换成整数
    MySQL备份1356错误提示修复办法
    Python全栈day17(文件处理)
    CentOS添加PHP至环境变量
    CentOS7.2编译配置LNMP环境(MySQL5.7.20,PHP7.0.24)
    php查询mysql数据库 查询条件替中文字符串变量时无法查询
  • 原文地址:https://www.cnblogs.com/x-ll123/p/9309313.html
Copyright © 2011-2022 走看看