java如何对Arraylist数组进行排序(用comparable)

Python019

java如何对Arraylist数组进行排序(用comparable),第1张

看代码:

import java.util.ArrayList

import java.util.Arrays

import java.util.Collections

public class Demo {

public static void main(String[] args) throws Exception {

Pair[] pairs = {

new Pair(0, 1),

new Pair(2, 9),

new Pair(7, 0),

new Pair(8, 8),

new Pair(8, 6),

new Pair(9, 2),

new Pair(1, 5),

new Pair(8, 2),

new Pair(9, 15),

new Pair(9, 5)

}

ArrayList<Pair> pairList = new ArrayList<>(Arrays.asList(pairs))

System.out.println("排序前:")

System.out.println(Arrays.toString(pairs))

Arrays.sort(pairs) // 对数组排序

System.out.println("排序后:")

System.out.println(Arrays.toString(pairs))

System.out.println("排序前:")

System.out.println(pairList)

Collections.sort(pairList) // 对 ArrayList 排序

System.out.println("排序后:")

System.out.println(pairList)

}

}

// 继承 Comparable 接口排序该类是 “可排序的”

// <> 里面的是排序时与当前实例进行比较的实例的类型

// 一般都和当前实例是同一个类型,比如这里就是 Pair 的实例 和 Pair 的实例比较

class Pair implements Comparable<Pair> {

public int left

public int right

public Pair(int left, int right) {

this.left = left

this.right = right

}

@Override

public String toString() {

return "[" + left + ", " + right + "]"

}

// 排序规则,先按 left 排序,再按 right 排序

@Override

public int compareTo(Pair that) {

if (this.left > that.left) {

return 1

} else if (this.left < that.left) {

return -1

} else if (this.right > that.right) {

return 1

} else if (this.right < that.right) {

return -1

}

return 0

}

}

可以发现先按 left 排序,如果 left 相等,则按 right 排序

public static void main(String[] args) {

ArrayList<Integer>arr=new ArrayList<>()

arr.add(89)

arr.add(78)

arr.add(56)

arr.add(92)

arr.add(76)

//升序排列;

Collections.sort(arr)

//逆序输出

Collections.reverse(arr)

for(int i=0i<arr.size()i++){

//这就是你要的效果

System.out.println("0"+i+" "+arr.get(i))

}

}

ArrayList

就是一个可以改变大小的一维数组.当然

你可以往ArrayList里放ArrayList或者其它的容器什么的那就用标准的排序方法就行了

用容量类就用Collections.sort

数组就用Arrays.sort

还有什么不清楚直接m我

百度知道最近抽风了

不能回答追问