Java 8 对 List> 排序


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]] ```


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM