如何相对于彼此对两个数组进行排序。

Blu*_*eni 5 java arrays

我有2个数组:

private String[] placeName;
private Double[] miles;
Run Code Online (Sandbox Code Playgroud)

它们中的数据如下所示:

placeName = {"home", "away", "here"};
miles = {111, 11, 3};
Run Code Online (Sandbox Code Playgroud)

值的位置彼此匹配。例如,家= 111,客场= 11

我需要将这些数组排序在一起,以免丢失最低到最高数字对它们的匹配方式。做到这一点的最佳方法是什么?我需要先合并数组吗?

ind*_*ble 5

由于两个值是如此紧密地耦合在一起,因此我实际上会编写一个自定义类来包含信息,然后对这些类进行排序,而不是使用原始数组。这样做会使您容易接触到许多可能的错误。
这样可以更好地控制,数据封装以及将来扩展类可能包含的方法或数据。

public class MyDistance implements Comparable<MyDistance> {
    private String placename;
    private double mileage;

    public MyDistance(String placename, double milage) {
        this.placename = placename;
        this.milage = milage;
    }

    public String getPlacename() {
        return this.placename;
    }

    public double getMilage() {
        return this.milage;
    }

    @Override
    public int compareTo(MyDistance anotherDistance)
    {
        return milage.compareTo(anotherDistance.getMilage());
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要更大的灵活性,那么可以编写一个自定义Comparator<MyDistance>类来代替让MyDistance类实现Comparable :

public class DistanceComparator extends Comparator<MyDistance> {
    @Override
    public int compare(MyDistance dist1, MyDistance dist2) {
        return dist1.getMilage().compareTo(dist2.getMilage());
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用此比较器来使用集合进行排序:

List<MyDistance> distanceList = getDistanceListSomehow();
Collections.sort(distanceList, new DistanceComparator());
Run Code Online (Sandbox Code Playgroud)

您不限于列表,我只是出于说明目的使用了它。您应该查看所有Java Collections类型,以最好地选择适合您目的的一种。不过,建议是,ArrayList类型易于使用,并且可以保留您想要的顺序。