当前位置: 首页 > 知识库问答 >
问题:

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

井疏珂
2023-03-14

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

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};
1/ 182.94 name3 42.07
2/ 183.95 name1 45.07
3/ 192.94 name2 46.06

我尝试了更多的解决方案,但都不起作用。我在这里也找到了一些解决方案,但没有一个解决方案可以同时使用更多的数组,最多使用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]);
            }
        });

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

共有1个答案

濮阳征
2023-03-14

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

因为上述数据是相关的,所以您应该为其创建一个模型,例如:

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;
    }
}

现在,无论需要多少对象,都可以向上旋转,使用必要的名称LatitudeDistance,然后将其存储到一个数组中,如下所示:

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());
      }
);

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

 类似资料:
  • 我在Java中有一个数组,其中包含一组随机日期: {2015年1月20日、2015年2月12日、2015年2月20日、2015年6月21日、2015年7月12日、2015年7月28日、2015年7月30日、2015年9月24日、2015年12月31日} 如何按月将此阵列拆分为多个阵列? 我想要 {2015年1月20日}、{2015年2月12日、2015年2月20日}、{2015年6月21日}、{2

  • 这就是我的问题。我需要帮助,试图找出我做错了什么,并从那里开始。我需要创建一个运行这些指令的程序。 创建名为Fraction的java类。该类用于表示两个整数的比率。包括允许用户设置分子和分母的突变体方法。还包括在屏幕上显示分数作为配给(例如5/9)的方法。此方法不需要将分数降低到最低项。 分数类应包含以下内容: •用于存储分子、分母和比值的私有实例变量。 •设置所有实例变量的构造函数。 •获取和

  • 问题内容: 我有2个表格-包含课程ID和课程名称的课程以及包含每个课程标签的tagCourse。 我想编写一个函数,该函数按给定的标签数组搜索课程,并按匹配标签的数量将其返回。但是我不知道如何正确,有效地编写它。请帮我。 IE。 问题答案: CREATE OR REPLACE FUNCTION search_by_tags(tags varchar[]) RETURNS TABLE (id_cou

  • 我有一个数组的值。我用一个条件对它进行排序,以保持某些项目在顶部。到目前为止,这是有效的。现在我想运行两个条件,例如,我有两个前缀要与数组中的每个项相匹配:tableprefix和第二个daryprefix。我已经实现的是将tableprefix保持在顶部。其余的项目必须按字母顺序排序。 我想要达到的目标: 1:数组项匹配表前缀在最顶部//已经实现 2:与secondaryprefix匹配的数组项

  • 将oneArr 按照 twoArr 的顺序进行排序,而且两个数组可能一样长,也可能不一样长, twoArr 是基于oneArr选中的数据,oneArr 是接口返回的数据,

  • 问题内容: 我有以下数组结构: 基于,以增量方式对数组进行排序的最佳方法是什么? 因此结果如下所示: 问题答案: 使用。 在PHP≥5.3中,应改为使用匿名函数: 请注意,以上两个代码均假定为整数。 在PHP≥7.0,使用,而不是减法,以防止溢出/截断问题。