gpt4 book ai didi

java - 使用两个参数对数组进行排序

转载 作者:行者123 更新时间:2023-11-29 07:45:00 25 4
gpt4 key购买 nike

我已经知道如何对 ArrayList 进行排序,但我想知道是否可以对具有两个参数的数组进行排序,例如:我有一个包含 5 个相同对象的数组,其中包含一个 float 和一个字符串:

- object 1 : 0 "DD"
- object 2 : 3 "FF"
- object 3 : 1 "GG"
- object 4 : 2 "AA"
- object 5 : 1 "AA"

我想像这样对它们进行排序:

- object 1 : 0 "DD"
- object 5 : 1 "AA"
- object 3 : 1 "GG"
- object 4 : 2 "AA"
- object 2 : 3 "FF"

是否可以通过将 Float.compare()String.compare() 相乘来使用比较器对它们进行排序?还是您需要先使用 Float.compare() 对它们进行排序,然后创建子数组以与 String.compare() 进行比较?

最佳答案

当然可以。您只需要一个比较器,它通过浮点值比较元素,如果它们的浮点值相等,则通过字符串值比较它们:

public class FooComparator implements Comparator<Foo> {
@Override
public int compare(Foo f1, Foo f2) {
int result = Float.compare(f1.getFloatValue(), f2.getFloatValue());
if (result == 0) {
result = f1.getStringValue().compareTo(f2.getStringValue());
}
return result;
}
}

Java 8 甚至可以为您做到这一点:

Comparator<Foo> c = Comparator.comparingDouble(Foo::getFloatValue)
.thenComparing(Foo::getStringValue);

关于java - 使用两个参数对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624672/

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