package com.test;
public class User {
private String name;
private Integer orderNo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrderNo() {
return orderNo;
}
public void setOrderNo(Integer orderNo) {
this.orderNo = orderNo;
}
}
对List<User>进行排序:
package com.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
User user1 =new User();
user1.setName("c");
user1.setOrderNo(3);
User user2 =new User();
user2.setName("c");
user2.setOrderNo(1);
User user3 =new User();
user3.setName("b");
user3.setOrderNo(2);
List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);
list.add(user3);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1){
return arg1.getOrderNo().compareTo(arg0.getOrderNo());
}
});
//倒序结果:
/*c:3
b:2
c:1*/
for(User u:list){
System.out.println(u.getName()+":"+u.getOrderNo());
}
//正序结果
/*c:1
b:2
c:3*/
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1){
return arg0.getOrderNo().compareTo(arg1.getOrderNo());
}
});
for(User u:list){
System.out.println(u.getName()+":"+u.getOrderNo());
}
}
}
补充float型的属性比较,其他类型的属性也可以类似:
User three = new User();
three.setMoney(0.9562F);
three.setName("three");
User four = new User();
four.setMoney(1.12F);
four.setName("four");
List<User> userList = new ArrayList<>();
userList.add(first);
userList.add(two);
userList.add(three);
userList.add(four);
/**
* 1倒序
*/
Collections.sort(userList,new Comparator<User>(){
public int compare(User arg0, User arg1){
return arg1.getMoney()>= arg0.getMoney()? 1:-1;
}
});
for(User u:userList){
System.out.println(u);
}
/**
* -1正序
*/
Collections.sort(userList,new Comparator<User>(){
public int compare(User arg0, User arg1){
return arg1.getMoney()>= arg0.getMoney()? -1:1;
}
});
注意:不同的jdk版本(jdk7以后貌似有点变化,这里的不能用>=符号),所以这样写:
/**
* 正序 jdk7以后建议使用
* Comparison method violates its general contract!
*/
Collections.sort(userList,new Comparator<User>(){
public int compare(User arg0, User arg1){
if(arg1.getMoney()>arg0.getMoney()){
return -1;
}else if(arg1.getMoney()== arg0.getMoney()){
return 0;
}else {
return 1;
}
// return arg1.getMoney()>= arg0.getMoney()? -1:1;
}
});