【问题标题】:Sort arraylist of arrays based on two prioritized elements根据两个优先元素对数组的arraylist进行排序
【发布时间】:2019-04-04 20:29:09
【问题描述】:

我有一个数组的 ArrayList,我想根据数组的两个整数对其进行排序。我想根据主整数按降序对它们进行排序,然后根据数组中存在的另一个辅助整数按升序对它们进行排序,同时保持第一顺序。

假设我有一个带有 [1, 3] 的数组 1; array2 与 [1, 1]; array3 与 [0, 50]。

起初,它们在 ArrayList 数组 1、数组 2 和数组 3 中是未排序的。 排序后依次为:array2、array1、array3。

【问题讨论】:

  • 好的。但是您的问题主体只是对挑战的描述。你有什么问题?
  • 我们很高兴您在这里,我们需要您的代码,以便我们可以帮助您修复它。

标签: java sorting arraylist


【解决方案1】:

您可以按Collections.sort 对列表进行排序。

public void sort(List<Integer[]> list)
     return Collections.sort(list, (o1, o2) -> o1[0].equals(o2[0]) ? o1[1] - o2[1] : o1[0] - o2[0]);
}

我们使用 Lambda 表达式与Integer[]进行比较

当你想对两个Integer(A,B)进行降序排序时,你必须像B-A一样比较它们,如果你想升序排序,你应该使用A-B

【讨论】:

    【解决方案2】:

    使用 java8 的单行代码

    list.stream().sorted((prim, sec) -> prim[0] == sec[0] ? prim[1] - sec[1] : prim[0] - sec[0]).collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多