Java Collections.sort() 排除字符范围

标签 java string sorting collections

我有一个关于 java Collections.sort() 的问题,我有 2 个由系统生成的文件,我正在尝试比较这两个文件,我做的第一件事是使用 java 的 Collections.sort() 重写这两个文件文件以便对它们进行排序,但我发现这些文件在偏移 7 到 18 的位置有一个系统生成的编号,因此这些文件似乎永远不匹配。我写了一行一行的过滤比较。

EEEDDDDR00002384800000000041929CAD...
EEEDDDDR00002384900000000041956CAD...
EEEDDDDR00002385000000000041938CAD...
EEEDDDDR00002385200000000041965CAD...
EEEDDDDR00002385700000000004198CAD...
EEEDDDDR00002385800000000004199CAD...
       ^--------^
System Generated and change the sort order.

有没有办法让 Collections.sort 中的压缩器忽略这个范围,可能还有一行上的其他范围?

最佳答案

您可以使用自定义 Comparator 来比较删除了索引 7-18 的字符串。 Java 8 的 Comparator.compating 语法使编写此类比较器变得非常优雅:

List<String> files = ...;
Collections.sort(files, 
                 Comparator.comparing(s -> s.substring(0, 7) + s.substring(18)));

关于Java Collections.sort() 排除字符范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38726531/

相关文章:

java - 在 BufferedImage 上绘制一个不透明的圆角矩形

java - Java 中 F 界多态性的返回类型

基于Java split的精确正则表达式匹配

java - 在普通内存和字符串池中创建新字符串

python - 将整数列表转换为字符串作为排序中字典的键

java - 如何格式化结果以显示小数点后的数字

Javascript:将字符串转换为对象数组?

C++ CLI System.String^ 到 MFC LPCTSTR

python按值排序json列表

python - 根据另一个字典对列表进行排序