我有这种类型的n个文件:
file_A.xml
file_2.xml
file_Z.xml
我需要获取具有最高优先级的文件。优先级按照此规则定义
A to Z, then 1 to 5
是最高优先级5,A是最低优先级。
你有什么建议去做吗?我可以使用Java 8,因此如果我可以使用lambda表达式,那将是理想的,但我对它们不是很强。
非常感谢!
答案 0 :(得分:1)
使用unweighted_loss
对weights
个文件进行排序。
您的实际订单:
A到Z,然后是1到5
不依赖词典编排顺序(用于Comparator
List
实施的订单
您的要求确实在数字字符之前显示字母字符,而字典顺序则相反
但是在两个性质相同的字符(字母或数字)之间,你使用字典顺序。
因此,您必须执行Comparable
操作来确定两个String
之间的顺序。
通过这种方式,您无法真正利用Java 8
如果排序依赖于直接字段比较,那么您可以完成它。
所以,你可以写一个String
:
String
答案 1 :(得分:1)
你不需要lambdas。如果您的文件位于List<File>
,则只需使用
Collections.sort(fileList, new Comparator<File>() {
public int compare(File f1, File f2){
// do your complex order logic here
}
});
我猜你可以用Lambdas做,但是如果你有复杂的逻辑要排序,那么无论如何你都需要一个独特的比较器。并且如上所述,将集合流式传输比使用集合类更昂贵。
希望这有帮助,帕特里克