• 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;
                        }
                    });

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

  • 相关阅读:
    POJ 3041 Asteroids 最小点覆盖 == 二分图的最大匹配
    POJ 3083 Children of the Candy Corn bfs和dfs
    POJ 2049 Finding Nemo bfs 建图很难。。
    POJ 2513 Colored Sticks 字典树、并查集、欧拉通路
    POJ 1013 Counterfeit Dollar 集合上的位运算
    POJ 2965 The Pilots Brothers' refrigerator 位运算枚举
    无聊拿socket写的100以内的加法考试。。。
    POJ 1753 Flip Game
    初学socket,c语言写的简单局域网聊天
    汇编语言 复习 第十一章 标志寄存器
  • 原文地址:https://www.cnblogs.com/x-ll123/p/9309313.html
Copyright © 2020-2023  润新知