2016-08-02 50 views
1

我有一个关于java Collections.sort()的问题,我有两个文件是由系统生成的,我试图比较两个,我做的第一件事是使用Java的Collections.sort()来重写这两个文件,以便它们被排序,但是我发现这些文件有一个系统生成的数字,位置偏移量为7到18,因此这些文件似乎永远不匹配。我写了一行行过滤比较。Java Collections.sort()不包括一系列字符

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

有没有一种办法,在Collections.sort压实忽略此范围内,并在线路其它可能的范围是多少?

+1

做出一个自定义的比较方法或lambda。 – Javant

+0

写入自定义比较器并在比较之前删除此范围 – Sanjeev

回答

3

您可以使用自定义Comparator比较删除索引7-18的字符串。 Java的8对Comparator.compating语法使得编写这样的比较很优雅:

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

您是否有扩展工作示例? –

+0

@KevinRauer你究竟是什么意思?如果你解释你错过了什么,我可以将它添加到我的答案中。 – Mureinik

+0

java 8的例子对我来说有点太新了..我需要添加逻辑来测试,看看我是否需要删除字符取决于发送的数据,并可能需要排除该行上的更多范围为好.. –