Android - 更原始的数组仅按一个数组排序

标签 android arrays sorting primitive

我没有找到任何解决方案,如何简单地对原始数组进行排序。

我有更多的原始数组:

public static String [] arr1={"name1","name2","name3"};
public static Double [] arr2={45.07,46.06,42.07};
public static Double [] arr3={183.95,192.94,182.94};

我唯一想做的就是根据 arr3 对数组进行排序,这样其他数据将与 arr3 项保持相关。

例如结果应该是:

1/ 182.94 name3 42.07
2/ 183.95 name1 45.07
3/ 192.94 name2 46.06

所以只需按 arr3 升序排序,保留其他相关项。

我尝试了更多解决方案,但没有任何效果。我也在这里找到了一些解决方案,但是没有解决方案可以同时处理更多数组,最多 2 个。

如果我只使用这个:

  Arrays.sort(arr3);

然后它将只对 arr3 中的项目进行排序,但其他数组中的其他项目不适合。

然后我尝试使用这个:

  Arrays.sort(arr1, new Comparator<Double>() {
            public Double compare( Double o1,  Double o2) {
                return Double.compare(arr3[o1], arr3[o2]);
            }
        });

但是只有arr1,还有错误,匿名类中的Compare(Double, Double)与java.util.comparator中的Compare(T,T)冲突。尝试使用不兼容的返回类型。

出于某种原因,返回类型需要 int,而不是 double。

最佳答案

您应该创建一个类来封装上述数据。避免像您所做的那样创建并行数组,因为它们很难维护并且有时会出现问题。

因为所说的数据是相关的,那么你应该为它创建一个模型,例如:

class ClassName { // I'll let you provide a more meaningful name
    private String name;
    private double latitude;
    private double distance;

    public String getName() {
        return name;
    }

    public double getLatitude() {
        return latitude;
    }

    public double getDistance() {
        return distance;
    }

    public ClassName(String name, double latitude, double distance) {
        this.name = name;
        this.latitude = latitude;
        this.distance = distance;
    }
}

现在,用必要的 namelatitudedistance 填充你需要的许多对象,然后将它存储到一个数组中所以:

ClassName[] myArray = new ClassName[]{
      new ClassName("name1",45.07, 183.95),
      new ClassName("name2",46.06, 192.94)
};

然后按距离或任何其他属性排序变得如此简单:

Arrays.sort(myArray, new Comparator<ClassName>() {
      @Override
      public int compare(ClassName o1, ClassName o2) {
           return Double.compare(o1.getDistance(), o2.getDistance());
      }
);

然后,您可以根据需要向模型添加更多属性,而不必担心并行数组提供的困惑情况。

关于Android - 更原始的数组仅按一个数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057397/

相关文章:

Python3 : sorting a list of dictionary keys

sorting - 在 julia 中对每个矩阵列进行排序

android - 如何在 SQLite 中使用 FTS3

java - 在运行时在 android 中更改所有屏幕方向

java - Android AppWidget : Method callback on instance created?

Java比较器乱序排序一个条目

android - 如何使布局适用于android中的所有尺寸

javascript - 如何通过 AJAX 将 JavaScript 数组传递给 Perl 脚本?

java - Java中读取文本文件到int数组

java - Hadoop WordCount 按单词出现次数排序