java中list集合排序,List集合中的元素进行排序

Collections对List集合中的数据进行排序

有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到

Java中提供的对集合进行操作的工具类Collections,其中的sort方法

简单例子

package com.kaishengit;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

/**

* @author Wgs

* @version 1.0

* @create:2018/04/28

*/

public class SortDemo {

public static void main(String[] args) {

List srs = Arrays.asList(5,2,9,3,4);

System.out.println("----排序前----");

// 5 2 9 3 4

prints(srs);

// 排序

Collections.sort(srs);

System.out.println("----排序后----");

// 2 3 4 5 9

prints(srs);

}

private static void prints(List srs) {

for (Integer s : srs){

System.out.println(s);

}

}

}

56,34

23,55

23,67

26,78

稍微复杂的List里面放一个复杂的对象

package com.kaishengit;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

* @author Wgs

* @version 1.0

* @create:2018/04/28

*/

public class User implements Comparable {

private int age;

private int score;

public User(int age, int score) {

this.age = age;

this.score = score;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

@Override

public int compareTo(User o) {

// 先按照年龄排序

int i = this.getAge() - o.age;

// 年龄相等按照成绩排序

if (i == 0) {

i = this.getScore() - o.getScore();

}

return i;

}

public static void main(String[] args) {

List users = new ArrayList();

users.add(new User(78, 26));

users.add(new User(67, 23));

users.add(new User(34, 56));

users.add(new User(55, 23));

Collections.sort(users);

for (User user : users) {

System.out.println(user.getScore() + "," + user.getAge());

}

/**

* 56,34

* 23,55

* 23,67

* 26,78

*/

}

}

我们会发现sort(List)方法中List中的T必须实现Comparable接口,然后实现compareTo()方法,该方法的返回值0代表相等,1表示大于,-1表示小于;为什么在简单例子中没有看到实现Comparable接口呢?是因为Integer类其实自己已经实现了Comparable接口,Java已经给我们做好了。

Collections提供的第二种排序方法sort(List list, Comparator super T> c)

先看例子:

package com.kaishengit;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

/**

* @author Wgs

* @version 1.0

* @create:2018/04/28

*/

public class User {

private int age;

private int score;

public User(int age, int score) {

this.age = age;

this.score = score;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

public static void main(String[] args) {

List users = new ArrayList();

users.add(new User(78, 26));

users.add(new User(67, 23));

users.add(new User(34, 56));

users.add(new User(55, 23));

Collections.sort(users, new Comparator() {

@Override

public int compare(User o1, User o2) {

int i = o1.getScore() - o2.getScore();

if(i == 0){

return o1.getAge() - o2.getAge();

}

return i;

}

});

for (User user : users) {

System.out.println(user.getScore() + "," + user.getAge());

}

/**

* 56,34

* 23,55

* 23,67

* 26,78

*/

}

}

从上面的例子我们可以看出Students类没有实现Comparable接口,只是在sort()方法

中多传入一个参数,只不过该参数是一个接口我们需要实现其compare方法。

以上就是是Java中Colelctions工具类为我们提供的两种集合排序方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值