基于给定优先级的订单文件 - lambda表达式

时间:2017-11-02 15:54:03

标签: java lambda

我有这种类型的n个文件:

file_A.xml
file_2.xml
file_Z.xml

我需要获取具有最高优先级的文件。优先级按照此规则定义

A to Z, then 1 to 5

是最高优先级5,A是最低优先级。

你有什么建议去做吗?我可以使用Java 8,因此如果我可以使用lambda表达式,那将是理想的,但我对它们不是很强。

非常感谢!

2 个答案:

答案 0 :(得分:1)

使用unweighted_lossweights个文件进行排序。

您的实际订单:

  

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做,但是如果你有复杂的逻辑要排序,那么无论如何你都需要一个独特的比较器。并且如上所述,将集合流式传输比使用集合类更昂贵。

希望这有帮助,帕特里克