我有一个关于java Collections.sort()的问题,我有两个由系统生成的文件,我试图比较这两个,我做的第一件事就是使用java的Collections.sort()重写两者文件,以便他们排序,但我发现这些文件有一个系统生成的数字在位置偏移7到18,因此这些文件似乎永远不匹配..我写了一行一行过滤比较。< / p>
EEEDDDDR00002384800000000041929CAD...
EEEDDDDR00002384900000000041956CAD...
EEEDDDDR00002385000000000041938CAD...
EEEDDDDR00002385200000000041965CAD...
EEEDDDDR00002385700000000004198CAD...
EEEDDDDR00002385800000000004199CAD...
^--------^
System Generated and change the sort order.
是否有一种方法可以使Collections.sort
中的压缩器和忽略此范围,以及某条线上的其他范围?
答案 0 :(得分:3)
您可以使用自定义Comparator
来比较删除了索引7-18的字符串。 Java 8的Comparator.compating
语法使编写这样的比较器非常优雅:
List<String> files = ...;
Collections.sort(files,
Comparator.comparing(s -> s.substring(0, 7) + s.substring(18)));