Java 如何使用对象的值连续两次对对象数组进行排序
我有一个对象数组。每个对象都有两个关联的适应值。我想先使用一个适应值对数组进行排序,然后进行一些计算。然后使用“其他适应值”字段对其再次排序。我尝试使用Java 如何使用对象的值连续两次对对象数组进行排序,java,arrays,sorting,object,Java,Arrays,Sorting,Object,我有一个对象数组。每个对象都有两个关联的适应值。我想先使用一个适应值对数组进行排序,然后进行一些计算。然后使用“其他适应值”字段对其再次排序。我尝试使用compareTo()方法,但我只能使用一个字段对其进行排序。建议:使用谷歌番石榴并进行复合排序 new Ordering<X>() { public int compare(X x1, X x2) { return ComparisonChain.start() .compare(x1.stringValue
compareTo()
方法,但我只能使用一个字段对其进行排序。建议:使用谷歌番石榴并进行复合排序
new Ordering<X>() {
public int compare(X x1, X x2) {
return ComparisonChain.start()
.compare(x1.stringValue, x2.stringValue)
.compare(x2.dateValue, x1.dateValue) // flipped for reverse order
.result();
}
}.immutableSortedCopy(listOfXs);
newordering(){
公共整数比较(X x1,X x2){
返回ComparisonChain.start()
.比较(x1.stringValue,x2.stringValue)
.compare(x2.dateValue,x1.dateValue)//按相反顺序翻转
.result();
}
}.immutableSortedCopy(listOfXs);
在两个比较之间,您可以调用另一个方法进行计算。
我建议使用一种变异因子
interface Mutation<T> {
void apply(T subject);
}
<T> Collection<? extends T> mutate(Collection<? extends T> input, Mutation<? super T> mutation) {
for (T element : input) {
mutation.apply(element);
}
return input;
}
接口突变{
无效申请(T主题);
}
Collectionyou需要使用2个不同的自定义比较器。将比较器设计为动态获取要执行比较的属性。是否需要2个不同的排序列表?或者您希望按一个标准排序,并使用第二个标准对根据第一个标准等效的对象进行排序?