Java Collections.sort(),不包括一系列字符

时间:2016-08-02 17:03:47

标签: java string sorting collections

我有一个关于java Collections.sort()的问题,我有两个由系统生成的文件,我试图比较这两个,我做的第一件事就是使用java的Collections.sort()重写两者文件,以便他们排序,但我发现这些文件有一个系统生成的数字在位置偏移7到18,因此这些文件似乎永远不匹配..我写了一行一行过滤比较。< / p>

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

是否有一种方法可以使Collections.sort中的压缩器和忽略此范围,以及某条线上的其他范围?

1 个答案:

答案 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)));