gpt4 book ai didi

java - 根据给定优先级对文件进行排序 - lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 02:31:12 26 4
gpt4 key购买 nike

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

file_A.xml
file_2.xml
file_Z.xml

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

A to Z, then 1 to 5

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

你有什么建议吗?我可以使用 Java 8,所以如果我可以使用 lambda 表达式,那就太理想了,但我对它们不是很擅长。

非常感谢!

最佳答案

使用比较器对文件列表进行排序。

您的实际订单:

A to Z, then 1 to 5

不依赖于字典顺序(用于StringComparable实现的顺序)

您的要求确实使字母字符出现在数字字符之前,而字典顺序则相反。
但在两个性质相同的字符(字母或数字)之间,您可以使用字典顺序。

因此,您必须执行 String 操作来确定两个 String 之间的顺序。
这样,你就无法真正利用 Java 8。
如果排序依赖于直接字段比较,您就可以做到。

因此,您可以编写一个比较器:

Comparator<String> priorityFileComparator = Comparator.comparing(
String::toString, (s1, s2) -> {
char s1Priority = s1.substring(5, 6).charAt(0);
char s2Priority = s2.substring(5, 6).charAt(0);

if (Character.isAlphabetic(s1Priority) && !Character.isAlphabetic(s2Priority)){
return -1;
}

if (Character.isAlphabetic(s2Priority) && !Character.isAlphabetic(s1Priority)){
return 1;
}

return s1.compareTo(s2); // same nature -> lexicographical comparison
});

关于java - 根据给定优先级对文件进行排序 - lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com