Java 用两个参数对数组排序
我已经知道如何对ArrayList进行排序,但我想知道这是否可以对具有两个参数的数组进行排序,例如:我有一个数组5个相同的对象,其中有一个浮点数和一个字符串,如下所示:Java 用两个参数对数组排序,java,arrays,sorting,Java,Arrays,Sorting,我已经知道如何对ArrayList进行排序,但我想知道这是否可以对具有两个参数的数组进行排序,例如:我有一个数组5个相同的对象,其中有一个浮点数和一个字符串,如下所示: - 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" - ob
- 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"
我想把它们分类如下:
- 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对它们进行排序,然后创建子数组与字符串进行比较。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);
当然可以。您只需要一个比较器,该比较器通过元素的浮点值进行比较,如果它们的浮点值相等,则通过它们的字符串值进行比较:
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);
您需要将类定义为:
然后只需调用Arrays.sortmyList。您需要将类定义为:
然后只需调用Arrays.sortmyList。混合使用正则表达式和排序就足够了。使用:作为String.split中的分隔符,然后使用Arrays.sort对这些数组进行排序!!!正则表达式和排序混合的可能副本就足够了。使用:作为String.split中的分隔符,然后使用arrays.sort对这些数组进行排序!!!可能与Acache Commons的+1重复我创建了有用的ChainComparator+1我创建了有用的ChainComparator