Java List排序『Collections.sort()比较对List排序』

阅读: 评论:0

Java List排序『Collections.sort()比较对List排序』

Java List排序『Collections.sort()比较对List排序』

在使用List集合时,通常情况下,希望从集合中得到的对象是按照一定顺序排列的,但是List集合的默认排序方式为按照对象的插入顺序来排序的。但是可以通过 java.util.Collections类的静态方法sort(List<T> list)、sort(List<T> list, Comparator<? super T> c)或reverse(List<?> list)对集合中的对象进行客户化排序。那么接下来就看看sort排序的两种具体实现。

方法一:实现java.lang.Comparable接口

在创建实体类UserA时就实现java.lang.Comparable接口,然后在该接口方法中自定义排序原则,如下:

package com.pes_soft.ppms.sort;import java.io.Serializable;@SuppressWarnings("serial")
public class UserA implements Serializable, Comparable<UserA> {private String userId;private String name;private int age;public UserA() {}public UserA(String userId, String name, int age) {this.userId = userId;this.name = name;this.age = age;}/*** 排序比较方法*/@Overridepublic int compareTo(UserA user) {// 首先比较年龄(age),如果年龄相同,则比较名字(userId)int flag = String.valueOf(this.age)pareTo(String.Age()));if (flag == 0) {return this.UserId());} else {return flag;}}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

方法二:实现java.util.Comparator接口

1、创建实体类UserB,不实现任何接口:

package com.pes_soft.ppms.sort;public class UserB {private String userId;private String name;private int age;public UserB() {}public UserB(String userId, String name, int age) {this.userId = userId;this.name = name;this.age = age;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

2、创建比较器类,实现java.util.Comparator接口,然后在该接口方法中自定义排序原则,如下:

package com.pes_soft.ppms.sort;import java.util.Comparator;public class UserBComparator implements Comparator<UserB> {/*** 排序比较方法*/@Overridepublic int compare(UserB user1, UserB user2) {//首先比较年龄(age),如果年龄相同,则比较名字(userId) int flag = String.Age())pareTo(String.Age())); if (flag == 0) { UserId()UserId()); }else { return flag; }}
}

测试类:

package com.pes_soft.ppms.sort;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class SortTest {public static void main(String[] args) { List<UserA> userlistA = new ArrayList<UserA>(); List<UserB> userlistB = new ArrayList<UserB>(); userlistA.add(new UserA("ff","诸葛亮",5)); userlistA.add(new UserA("dd","张三",4)); userlistA.add(new UserA("aa","刘德华",1)); userlistA.add(new UserA("ee","刘表",5)); userlistA.add(new UserA("bb","曹操",2));   userlistA.add(new UserA("cc","深田恭子",3)); userlistA.add(new UserA("gg","SAP",6)); userlistB.add(new UserB("ff","诸葛亮",5)); userlistB.add(new UserB("dd","张三",4)); userlistB.add(new UserB("aa","刘德华",1)); userlistB.add(new UserB("ee","刘表",5)); userlistB.add(new UserB("bb","曹操",2));   userlistB.add(new UserB("cc","深田恭子",3)); userlistB.add(new UserB("gg","SAP",6)); Collections.sort(userlistA);UserBComparator userBComparator = new UserBComparator();Collections.sort(userlistB, userBComparator);for (UserA user : userlistA) { System.out.UserId() + " | " + Age() + " | " + Name()); }System.out.println("=======分隔线=======");for (UserB user : userlistB) { System.out.UserId() + " | " + Age() + " | " + Name()); }}
}

测试结果,两种排序方式的排序结果是一样的:

aa | 1 | 刘德华
bb | 2 | 曹操
cc | 3 | 深田恭子
dd | 4 | 张三
ee | 5 | 刘表
ff | 5 | 诸葛亮
gg | 6 | SAP
=======分隔线=======
aa | 1 | 刘德华
bb | 2 | 曹操
cc | 3 | 深田恭子
dd | 4 | 张三
ee | 5 | 刘表
ff | 5 | 诸葛亮
gg | 6 | SAP

本文发布于:2024-02-01 19:55:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170678851939071.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:List   Java   sort   Collections
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23