Java 8 对 List<List> 排序

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.stream.Collectors;
  4. /**
  5. * @author libin
  6. * @date 2018/12/14 13:36:34
  7. */
  8. public class Test {
  9. public static void main(String[] args) {
  10. List<List<String>> stulist = new ArrayList<List<String>>();
  11. List<String> list1 = new ArrayList<String>();
  12. List<String> list2 = new ArrayList<String>();
  13. List<String> list3 = new ArrayList<String>();
  14. List<String> list4 = new ArrayList<String>();
  15. list1.add("1");
  16. list1.add("张三");
  17. list1.add("D");
  18. list2.add("2");
  19. list2.add("李四");
  20. list2.add("B");
  21. list3.add("3");
  22. list3.add("王五");
  23. list3.add("A");
  24. list4.add("4");
  25. list4.add("赵六");
  26. list4.add("C");
  27. stulist.add(list3);
  28. stulist.add(list4);
  29. stulist.add(list1);
  30. stulist.add(list2);
  31. System.out.println(stulist);
  32. // Java 8 对List<List<String>>排序代码
  33. stulist = stulist.stream().sorted((o1, o2) -> {
  34. for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
  35. int c = o1.get(2).compareTo(o2.get(2));
  36. if (c != 0) {
  37. return c;
  38. }
  39. }
  40. return Integer.compare(o1.size(), o2.size());
  41. }).collect(Collectors.toList());
  42. System.out.println(stulist);
  43. stulist = stulist.stream().sorted((o1, o2) -> {
  44. for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
  45. int c = Integer.valueOf(o1.get(0)).compareTo(Integer.valueOf(o2.get(0)));
  46. if (c != 0) {
  47. return c;
  48. }
  49. }
  50. return Integer.compare(o1.size(), o2.size());
  51. }).collect(Collectors.toList());
  52. System.out.println(stulist);
  53. }
  54. }

点击查看结果

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

Java 8 对 List<List<String>> 排序的更多相关文章

  1. Java比较器对数组,集合排序一

    数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...

  2. 【Java】【11】String数组和List相互转换

    正文: 1,String[]转List String[] strs = {"aa", "bb", "cc"}; //String数组 //方 ...

  3. 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...

  4. Java基础教程:对象比较排序

    Java基础教程:对象比较排序 转载请标明出处:http://blog.csdn.net/wangtaocsdn/article/details/71500500 有时候需要对对象列表或数组进行排序, ...

  5. Java数据结构和算法(五)--希尔排序和快速排序

    在前面复习了三个简单排序Java数据结构和算法(三)--三大排序--冒泡.选择.插入排序,属于算法的基础,但是效率是偏低的,所以现在 学习高级排序 插入排序存在的问题: 插入排序在逻辑把数据分为两部分 ...

  6. java基础源码 (1)--String类

    这个是String类上面的注释,我用谷歌翻译翻译的,虽然有点语法上的问题,但是大概都可以翻译出来 /** * The {@code String} class represents character ...

  7. Java集合框架和数组的排序(转载)

    Java集合框架(*Collection)*和数组的排序 ​ 根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还 ...

  8. java.lang.NumberFormatException: For input string: "1608020001 " 错误

    错误: java.lang.NumberFormatException: For input string: "1608020001 "    at java.lang.Numbe ...

  9. 10 Things Every Java Programmer Should Know about String

    String in Java is very special class and most frequently used class as well. There are lot many thin ...

随机推荐

  1. Windows互斥锁demo和分析

    一:windows创建锁接口 创建互斥锁的方法是调用函数CreateMutex HANDLE CreateMutex( LPSECURITY_ATTRIBUTESlpMutexAttributes, ...

  2. 通过ida dump Uinity3D的加密dll

    声明: 1.本文转载自:http://www.52pojie.cn/thread-398266-1-1.html,仅供自己保存使用,高手勿喷 2.欢迎学习交流 通过ida dump Uinity3D的 ...

  3. i针对网段开放端口 (命令行设置)

    针对网段开放端口 -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 1234 -j ACCEPT 命令行设置iptables iptables -I I ...

  4. JS获取URL中参数值(QueryString)的4种方法分享

    方法一:正则法 function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(& ...

  5. centos7.2的yum安装mysql和修改初始密码

    一.centos7.2安装mysql CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变: 下载mysql的源 wget http://de ...

  6. HDU 2619 完全剩余类 原根

    求有多少$i(<=n-1)$,使 $x^i  \mod n$的值为$[1,n-1]$,其实也就是满足完全剩余类的原根数量.之前好像在二次剩余的讲义PPT里看到这个过. 直接有个定理,如果模k下有 ...

  7. Python学习笔记(三十一)正则表达式

    ---恢复内容开始--- 摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 ...

  8. Linux 目录详解 树状目录结构图

    1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...

  9. 解决gridview row 左边序列号 显示不完全的技巧

    放在主程序 入口处, public Form1() { InitializeComponent(); gridView1.IndicatorWidth = ; //<宽度值>官方推荐常用是 ...

  10. Windows降权

    使用invoke-tokenmanipulation进行降权 枚举所有令牌 PS C:\Users\SMC> Get-ExecutionPolicy Restricted PS C:\Users ...