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

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 排序

java中的ArrayList进行冒泡排序,主要是循环遍历取出数租明姿据,然后进行比较排序,如下代码:

package com.qiu.lin.he

import 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)这种写法是没有错误的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12522049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存