看代码:
import java.util.ArrayListimport 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 排序
java中的ArrayList进行冒泡排序,主要是循环遍历取出数租明姿据,然后进行比较排序,如下代码:
package com.qiu.lin.heimport java.util.ArrayList
public class Ceshi {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>()
list.add(76)
list.add(4)
list.add(786)
list.add(43)
list.add(21)
list.add(432)
list.add(10)
for (int i = 0 i < list.size() - 1 i++) {
for (int j = 1 j < list.size() 槐铅- i j++) {
Integer a
if (list.get(j - 1).compareTo(list.get(j)) > 0) { // 比较两个整数的大小
a = list.get(j - 1)
list.set((j - 1), list.get(j))
list.set(j, a)//交弊绝换数据
}
}
}
for (Integer s : list) {
System.out.println(s.intValue())//输出arraylist的数据
}
}
}
运行结果如下:
1、这段代码是没问题的,我试过了。2、“类型
List
中的方法
add(int,
Object)对于参数(int)不适用”,你是在什么地方看到的,java里好像没有中文信息。这句话没完全看懂,详细说明一下add方法的用法吧。
List的add(int
index,
Object
obj)方法是禅散在指定的索引index的位置插入一个对象obj,原index处和其后的对象依次后移一位。指定的index最大可以是List.size(),也就是最多可以把obj放到List的最后。index
〉
list.size()的时候会引发异常。
方法的第一个参数类型是int,第二个是Object。jdk1.4和更早的版本里,第二个参数必须是Object。add(0,1)这种写法是错误的,必谈猜须用add(0,new
Integer(1))。从jdk1.5开始,java加入一个重要的机制:自动拆装箱,简单的理解就是基本数据类型和其封装类的自动贺侍氏转化。现在add(0,1)这种写法是没有错误的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)