解决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;
}
@Override
public 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[]>(){
@Override
public 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]); //张三 李四 王五
}
}
}