Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用两个参数对数组排序_Java_Arrays_Sorting - Fatal编程技术网

Java 用两个参数对数组排序

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

我已经知道如何对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"
- 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