Java 8 对 List<List<String>> 排序

Java 8 对 List<List > 排序

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author libin
 * @date 2018/12/14 13:36:34
 */
public class Test {

    public static void main(String[] args) {

        List<List<String>> stulist = new ArrayList<List<String>>();

        List<String> list1 = new ArrayList<String>();
        List<String> list2 = new ArrayList<String>();
        List<String> list3 = new ArrayList<String>();
        List<String> list4 = new ArrayList<String>();

        list1.add("1");
        list1.add("张三");
        list1.add("D");

        list2.add("2");
        list2.add("李四");
        list2.add("B");

        list3.add("3");
        list3.add("王五");
        list3.add("A");

        list4.add("4");
        list4.add("赵六");
        list4.add("C");

        stulist.add(list3);
        stulist.add(list4);
        stulist.add(list1);
        stulist.add(list2);

        System.out.println(stulist);

        // Java 8 对List<List<String>>排序代码
        stulist = stulist.stream().sorted((o1, o2) -> {
            for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
                int c = o1.get(2).compareTo(o2.get(2));
                if (c != 0) {
                    return c;
                }
            }
            return Integer.compare(o1.size(), o2.size());
        }).collect(Collectors.toList());
        System.out.println(stulist);

        stulist = stulist.stream().sorted((o1, o2) -> {
            for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
                int c = Integer.valueOf(o1.get(0)).compareTo(Integer.valueOf(o2.get(0)));
                if (c != 0) {
                    return c;
                }
            }
            return Integer.compare(o1.size(), o2.size());
        }).collect(Collectors.toList());
        System.out.println(stulist);
    }

}

点击查看结果

[[3, 王五, A], [4, 赵六, C], [1, 张三, D], [2, 李四, B]]
[[3, 王五, A], [2, 李四, B], [4, 赵六, C], [1, 张三, D]]
[[1, 张三, D], [2, 李四, B], [3, 王五, A], [4, 赵六, C]]

猜你喜欢

转载自www.cnblogs.com/hglibin/p/10119676.html