Java实现List集合排序

来源:互联网 发布:淘宝网总裁是谁 编辑:程序博客网 时间:2024/05/31 19:55
解决List集合中装一般类对象或是数组排序的问题:
package com.study.entity;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * 实现List对象排序 * 方法有二: * 一:List对象(类实现comparable<T>接口,实现compareTo方法,最后调用Collections.sort(new List<T>())即可 * (注意这里比较的属性是引用类型不是基本数据类型,用Integer而不是int)) *  * 二:调用Collection.sort()的重载的另一种方法 * Collections.sort(new List<T>(),new Comparator<T>(){实现里面的compareTo}); * @author pyi * */class Person implements Comparable<Person>{private String userName;private Integer order;public Person() {}public Person(String userName, Integer order) {this.userName = userName;this.order = order;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Integer getOrder() {return order;}public void setOrder(Integer order) {this.order = order;}@Overridepublic int compareTo(Person arg0) {return this.getOrder().compareTo(arg0.getOrder());}}public class Test{public static void main(String[] args) {Person p1 = new Person("张三",1);Person p2 = new Person("李四",2);Person p3 = new Person("王五",3);List<Person> list = new ArrayList<>();list.add(p3);list.add(p2);list.add(p1);Collections.sort(list);/** * 张三 * 李四 * 王五*/for(Person p : list){System.out.println(p.getUserName());}System.out.println("----------惹人喜爱的分割线-----------");/** * 方法二(实现对Object数组的排序 * (在面对List里面装的不是类对象时,此时是不能用第一种方法的.无法实现类继承comparable<T>)) */Object[] obj1 = {"张三",1};Object[] obj2 = {"李四",2};Object[] obj3 = {"王五",3};List<Object[]> objList = new ArrayList<>();objList.add(obj3);objList.add(obj2);objList.add(obj1);for(Object[] o : objList){System.out.println(o[0]); //王五 李四 张三}Collections.sort(objList, new Comparator<Object[]>(){@Overridepublic int compare(Object[] arg0, Object[] arg1) {return Integer.valueOf(arg0[1].toString()).compareTo(Integer.valueOf(arg1[1].toString()));}});System.out.println("----------惹人喜爱的分割线-----------");for(Object[] o : objList){System.out.println(o[0]); //张三 李四 王五}}}

1 0
原创粉丝点击