有一个Java数组列表;如何按每个数组的最后一个元素排序?

有一个Java数组列表;如何按每个数组的最后一个元素排序?,java,arrays,list,sorting,Java,Arrays,List,Sorting,我有一段代码,如下所示: 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); } } List v1v2weighting=new A

我有一段代码,如下所示:

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);
    }
}
List v1v2weighting=new ArrayList();
对于(int i=0;i

结束后,我有一个3元素数组的列表,其中每个数组中的最后一个元素是权重。现在我想按权重对这个列表进行排序,即得出一个完整的列表,其中每个元素e,e_I[2]≤ e_(i+1)[2]。在Java中有没有一种简单的方法来执行这样的操作?在寻找解决方案时,我遇到过collections.sort(),但这似乎只适用于处理整数等可比较数据列表的情况。非常感谢您的帮助。

对于Java 1.7中的排序
列表
,您可以使用以下代码段

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
    }
}
Collections.sort(v1v2weighting,newcomparator(){
公共整数比较(整数[]o1,整数[]o2){
返回整数。比较(o1[2],o2[2]);//假设所有数组至少有3个元素
}
}

事实上,您可以使用此方法实现任何排序机制。

v1v2weighting.sort(Comparator.comparingit(a->a[2]);
当我尝试实现此方法时,会收到“错误:表达式的非法开始”箭头->指示为problem@MMMMMCK哪个Java版本?是的,该错误在Java 8中已修复。@Shubhandupramanik 1.7.0_151在使用
Integer.compare()
后显示在终端中,因为减法可能会下溢。@shmosel很好的建议,我用您的评论修改了答案。