Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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

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
Android-更多的原始数组只按一个数组排序_Android_Arrays_Sorting_Primitive - Fatal编程技术网

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

Android-更多的原始数组只按一个数组排序,android,arrays,sorting,primitive,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/

我没有找到任何解决方案,如何简单地对基元数组排序

我有更多的基本数组:

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]);
            }
        });
Arrays.sort(arr1,新的比较器(){
公共双比较(双o1,双o2){
返回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;
    }
}
现在,旋转任意多个需要填充必要的
名称
纬度
距离的对象,然后将其存储到如下数组中:

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());
      }
);
Arrays.sort(myArray,newcomparator(){
@凌驾
公共int比较(类名o1,类名o2){
返回Double.compare(o1.getDistance(),o2.getDistance());
}
);

然后,您可以根据需要向模型中添加更多属性,而无需使用并行数组提供的混乱数据进行强调。

使用相关数据创建一个类,并按给定属性进行排序。您能更具体一点吗?
arr2
代表什么和
arr3
?这只是一个示例,实际上我有更多的数组。arr1是名称arr2是纬度,其他数组包含一个图像和经度。最后arr3是距离,所以我需要按arr3-距离进行排序。好的,我将提供一个解决方案来解释我的意思。啊,所以没有其他方法可以将数组类型转换为:新的类名(“name1”,45.07,183.95)?您的代码似乎正常工作,但我的输出仍然没有排序,因为我是通过:gv.setAdapter(新的CustomAdapter(getContext(),arr1,arr2,arr3))进行排序的;其中gv是我的GridView。@wotan我已经对它进行了测试,并对数组进行了排序。您可以做的是,在按照上述属性对
ClassName
模型进行排序后,您可以从中提取所需的信息。例如,您可以通过执行
String[]arr1=新字符串[myArray.length]来获取我的所有名称;例如(int i=0;i
获取所有纬度-->
double[]arr2=new double[myArray.length];for(int i=0;i
获取所有距离-->
double[]arr3=new double[myArray.length];对于(int i=0;i
@wotan如果需要,您可能希望将数组的类型更改为
double
,而不是
double