gpt4 book ai didi

Java:Collections.sort 对属性不起作用?

转载 作者:行者123 更新时间:2023-11-29 08:28:20 25 4
gpt4 key购买 nike

所以我有一个列表 announceList,其中有一个 Announces 列表,我正在尝试按百分比值对列表进行升序排序,所以如果我得到这样的列表:

Announce1 - 20.10%
Announce2 - 20.54%
Announce3 - 27.50%
Announce4 - 76.36%

排序后我想要这样的列表:

Announce4 - 76.36%
Announce3 - 27.50%
Announce2 - 20.54%
Announce1 - 20.10%

我使用的方法是这样的:

Collections.sort(announceList, new Comparator<Announce>() {
@Override
public int compare(Announce o1, Announce o2) {
int i1 = o1.getMatchPercentage().intValue();
int i2 = o2.getMatchPercentage().intValue();
return Integer.compare(i1, i2);
}
});

adapter.setAnnounceList(announceList);
adapter.notifyDataSetChanged();

但我没有得到我想要的列表,如果你知道我做错了什么,请告诉我,任何帮助将不胜感激,谢谢。

最佳答案

如果您希望小数位影响您的排序,则需要比较实际的 double/float 值,即避免 74.5 > 74.9。此外,由于您希望按降序排序,您可以尝试使用 Double.compare():

Collections.sort(announceList, new Comparator<Announce>() {
@Override
public int compare(Announce o1, Announce o2) {
return Double.compare(o2.getMatchPercentage(), o1.getMatchPercentage());
}
});

如果您使用的是 Java 8 或更高版本,您还可以:

announceList.sort(Comparator.comparingDouble(Announce::getMatchPercentage).reversed());

这是一个使用普通 double 的小例子:

public static void main(String[] args) {
List<Double> list = new ArrayList<Double>();
list.add(20.10);
list.add(20.54);
list.add(27.50);
list.add(76.36);

System.out.println("Before sort:");
for(Double d : list) {
System.out.println(d);
}
System.out.println();

Collections.sort(list, new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
return Double.compare(o2, o1);
}
});

System.out.println("After sort:");
for(Double d : list) {
System.out.println(d);
}
}

输出:

Before sort:
20.1
20.54
27.5
76.36

After sort:
76.36
27.5
20.54
20.1

关于Java:Collections.sort 对属性不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515403/

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