gpt4 book ai didi

Java 对两个表达式的集合进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:48 24 4
gpt4 key购买 nike

我有课

public class User {

String country;
Double rating;
Double status;
}

我需要根据两个条件对此类的列表进行排序。

列表的开头需要是对国家/地区具有特定值的用户。这些用户根据评分进行排序。如果评级相同,则比较状态。

如果用户对国家/地区有其他值,只需按评级对其进行排序即可。

我尝试了很多次,这是最近的一次:

 final String country = me.getCountry();
Collections.sort(usersArray, new Comparator<User>() {
@Override
public int compare(User lhs, User rhs) {
User user1 = lhs.getUser();
String country1 = user1.getCountry();

int result = country.equals(country1) ? 1 : 0;

if (result == 0) {
result = Double.compare(lhs.rating, rhs.rating);
if (result == 0) {
return Double.compare(lhs.status, rhs.status);
} else
return result;
}
return Double.compare(lhs.rating, rhs.rating);
}
});

最佳答案

考虑使用CompareToBuilder来自Apache Commons Lang 。您告诉它要按哪个顺序比较哪些字段,它就会完成其余的工作。您的代码也更少。

     return new CompareToBuilder()
.append(lhs.country, rhs.country)
.append(lhs.rating, rhs.rating)
.append(lhs.status, rhs.status)
.toComparison();
}

关于Java 对两个表达式的集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708732/

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