• 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

     


  • 相关阅读:
    小程序云开发(一)
    原来你是这样的"layui"啊
    记个笔记(项目中遇到的关于input的一些操作)
    vue的学习之路 vue-cli与axios
    小程序 上传图片
    文字滚动
    css 隐藏滚动条
    linux基础
    接口测试
    整理python循环,列表,字典笔记
  • 原文地址:https://www.cnblogs.com/chenglc/p/9930259.html
Copyright © 2020-2023  润新知