gpt4 book ai didi

java - 如何在java中对集合进行排序以获取顶部/底部的默认值?

转载 作者:行者123 更新时间:2023-12-01 07:00:42 25 4
gpt4 key购买 nike

给定一个字符串列表,有时我们必须对所有项目进行排序,除了少数必须放在顶部或底部的项目之外,

List<String> profiles = Arrays.asList(new String[] {
"Y-Profile", "X-Profile", "Default", "A-Profile", "B-Profile"
});

List<String> sortedProfiles = profiles.stream().sorted((o1, o2)->o1.compareTo(o2)).
collect(Collectors.toList());

当前输出与默认字符串比较如下,

sortedProfiles ==> [A-Profile, B-Profile, Default, X-Profile, Y-Profile]

所需的输出如下,在java中执行此操作的乐观方法是什么,而无需太多迭代或过滤,因为列表大小是动态的,并且可能会在一段时间内变大

sortedProfiles ==> [Default, A-Profile, B-Profile, X-Profile, Y-Profile]

最佳答案

您需要实现一个比简单的o1.compareTo(o2)更智能的比较器。您最终可能会得到这样的结果(但不一定是最有效的):

final String defaultVal = "Default";
List<String> sortedProfiles = profiles.stream().sorted(
(o1, o2) -> defaultVal.equals(o1) && defaultVal.equals(o2)
? 0
: (defaultVal .equals(o1)
? -1
: (defaultVal .equals(o2) ? 1 : o1.compareTo(o2)))
).collect(Collectors.toList());

关于java - 如何在java中对集合进行排序以获取顶部/底部的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55532146/

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