zoukankan      html  css  js  c++  java
  • list排序

    实现方式:
    1 Collections.sort(List<T> list, Comparator<? super T> c);
    2 list.sort(Comparator<? super T> c)
    3 stream实现
    1和2是同一个;

    1 list.sort(Comparator<? super T> c)
    userlist.sort(new ComparatorUser());

      2 Collections.sort(List<T> list, Comparator<? super T> c);

     Collections.sort(userlist, new ComparatorUser());
    3 stream实现
    userlist = userlist.stream()
                    .sorted((x, y) -> {
                        int flag = x.getAge().compareTo(y.getAge());
                        if (flag == 0) {
                            return x.getName().compareTo(y.getName());
                        } else {
                            return flag;
                        }
                    })
                    .collect(Collectors.toList());
    全代码
    测试类
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * ClassName: Test<br/>
     * Description: <br/>
     * date: 2018/11/8 下午4:15<br/>
     *
     * @author chengluchao
     * @since JDK 1.8
     */
    
    public class Test {
        static List<User> userlist = new ArrayList();
    
        static {
            userlist.add(new User("user001", "4"));
            userlist.add(new User("user002", "1"));
            userlist.add(new User("user003", "5"));
            userlist.add(new User("user004", "2"));
            userlist.add(new User("user005", "5"));
            userlist.add(new User("user006", "3"));
            userlist.add(new User("user007", "6"));
        }
    
        public static void main(String[] args) {
            java7impl();
            print();
        }
    
        /**
         * 基于java7,6,5的实现
         */
        static void java7impl() {
            userlist.sort(new ComparatorUser());
        }
    
        /**
         * 基于java7,6,5的实现
         */
        static void java7impl2() {
            Collections.sort(userlist, new ComparatorUser());
        }
    
        /**
         * 基于java8的实现
         * 不需要写ComparatorUser类
         */
        static void java8impl() {
            Collections.sort(userlist, (x, y) -> {
                int flag = x.getAge().compareTo(y.getAge());
                if (flag == 0) {
                    return x.getName().compareTo(y.getName());
                } else {
                    return flag;
                }
            });
        }
    
        /**
         * 基于java8的实现
         * stream实现,更为灵活
         */
        static void java8impl2() {
            userlist = userlist.stream()
                    .sorted((x, y) -> {
                        int flag = x.getAge().compareTo(y.getAge());
                        if (flag == 0) {
                            return x.getName().compareTo(y.getName());
                        } else {
                            return flag;
                        }
                    })
                    .collect(Collectors.toList());
        }
    
        static void print() {
            for (User user : userlist) {
                System.out.println(user.getAge() + "," + user.getName());
            }
        }
    }

    user类

    /**
     * ClassName: User<br/>
     * Description: <br/>
     * date: 2018/11/8 下午4:10<br/>
     *
     * @author chengluchao
     * @since JDK 1.8
     */
    
    public class User {
        String name;
        String age;
    
        public User(String name, String age) {
            this.name = name;
            this.age = age;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    import java.util.Comparator;
    
    public class ComparatorUser implements Comparator<User> {
    
        //比较的逻辑实现::://首先比较年龄,如果年龄相同,则比较名字
        public int compare(User user0, User user1) {
            int flag = user0.getAge().compareTo(user1.getAge());
            if (flag == 0) {
                return user0.getName().compareTo(user1.getName());
            } else {
                return flag;
            }
        }
    
    }

    输出结果:

    1,user002
    2,user004
    3,user006
    4,user001
    5,user003
    5,user005
    6,user007

     


  • 相关阅读:
    java中Calendar类里面的月份是月份数减一。
    hdu oj
    存在重复元素
    杨辉三角
    删除链表的倒数第n个结点
    相交链表
    环形链表 II
    环形链表
    至少是其他数字两倍的最大数
    寻找数组的中心索引
  • 原文地址:https://www.cnblogs.com/chenglc/p/9930259.html
Copyright © 2011-2022 走看看