fileList.sort((o1, o2) -> Objects.requireNonNull(o2.listFiles()).length - Objects.requireNonNull(o1.listFiles()).length); 这段代码什么意思
时间: 2024-05-24 17:11:53 浏览: 133
List中保存对象,按对象中某一属性排序【含程序源码】
这段代码使用了Java 8中的Lambda表达式,对一个文件列表进行排序。具体来说,它按照每个文件夹中包含的文件数量从多到少进行排序。
其中,`fileList`是一个文件列表,`sort`方法是一个对列表进行排序的方法。Lambda表达式`(o1, o2) -> Objects.requireNonNull(o2.listFiles()).length - Objects.requireNonNull(o1.listFiles()).length`定义了排序规则:
- `o2.listFiles()`和`o1.listFiles()`分别获取`o2`和`o1`文件夹中的文件列表,如果为`null`则会抛出异常。
- `length`获取文件列表的长度,即文件数量。
- 对于每个文件夹,计算出其包含的文件数量,并按照数量的差值进行比较,返回结果为负数表示前者的数量多,应该排在后面,反之则应该排在前面。
因此,执行该代码后,`fileList`中的文件夹按照包含文件数量从多到少的顺序排列。
阅读全文