【问题标题】:Have a List of Arrays in Java; How to Sort By the Last Element of Each Array?在 Java 中有一个数组列表;如何按每个数组的最后一个元素排序?
【发布时间】:2017-10-26 03:44:29
【问题描述】:

我有一段代码如下:

List<int[]> v1v2weighting = new ArrayList<int[]>();

for(int i = 0; i < size; i++){
    for(int j = 0; j < size; j++){
        int[] a = {i,j,graph[i][j]};
        v1v2weighting.add(a);
    }
}

结束后,我有一个 3 元素数组的列表,其中每个数组中的最后一个元素是权重。我现在想按权重对这个列表进行排序,即到达一个完成的列表,其中对于每个元素 e,e_i[2] ≤ e_(i+1)[2]。有没有一种简单的方法可以在 Java 中执行这样的操作?我在寻找解决方案时遇到了 collections.sort() ,但这似乎只在我处理整数等可比较列表的情况下才有效。任何帮助表示赞赏。

【问题讨论】:

  • v1v2weighting.sort(Comparator.comparingInt(a -&gt; a[2]));
  • 当我尝试实现这一点时,我收到“错误:表达式的非法开始”,箭头 -> 被指示为问题
  • @MMMMCK 哪个 Java 版本?
  • 是的,该错误已在 Java 8 中修复。
  • @ShubhenduPramanik 1.7.0_151 显示在终端中

标签: java arrays list sorting


【解决方案1】:

为了在 Java 1.7 中对List 进行排序,您可以使用以下代码段。

Collections.sort(v1v2weighting, new Comparator<int[]>() {
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o1[2], o2[2]); // suppose all your arrays has at least 3 elements
    }
}

事实上,你可以使用这种方法实现任何排序机制。

【讨论】:

  • 更安全地使用Integer.compare(),因为减法可能会下溢。
  • @shmosel 好建议,我用你的评论修改了答案。
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 2018-08-01
  • 2021-12-17
相关资源
最近更新 更多