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

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

  • 相关阅读:
    【JZOJ3188】找数【数论,数学】
    【JZOJ3187】的士【模拟】
    【JZOJ3187】的士【模拟】
    【洛谷P1641】生成字符串【数论,数学】
    【洛谷P1896】互不侵犯【状压dp】
    聚集索引与非聚集索引
    哈希索引
    索引能提高检索速度,降低维护速度
    MySQL索引基本知识
    注解
  • 原文地址:https://www.cnblogs.com/x-ll123/p/9309313.html
Copyright © 2011-2022 走看看