标签:com ali 比较 tar under 对比 sdn sort 数值
现有一个List集合,User中有这两个属性(String name; Integer age) 要通过age对list进行重新排序,以下有三个方法:
第一种方法:让User实现 (implements) Comparable接口重写compareTo方法:
public class User implements Comparable{
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(User o) {
return this.age.compareTo(o.getAge()); //默认是升序排列,前提是age必须是Integer类型
/*if(this.getAge()>o.getAge()) { //这个也是升序排列
return 1; //代码含义 :是如果当前对象的数值与对比对象的数值大的话 返回 1 ,就是说(o对象)放在了前边
}
if(this.getAge()o.getAge()){
* return -1; //代码含义 :是如果当前对象的数值与对比对象的数值大的话 返回 -1 ,就是说(当前对象)放在了前边
* }
* if(this.getAge()
return 1;//大于
return -1;//小于
通过Collections.sort(userList)重新排序
参考地址:https://blog.csdn.net/wuya112709/article/details/51422156 对comparable中 1、-1、0 的理解
第二种方法:如果User类没有实现comparable接口,可以自定义一个比较器(comparator),重写compare方法自定义排序规则;
public class MyComparator implements Comparator{
@Override
public int compare(User o1, User o2) {
if(o1.getAge()>o2.getAge()) {//升序
return 1; //代码含义:如果第一个数值大于第二个数值 返回 1,就是说把o1放在了o2前
}
if(o1.getAge() return -1;//代码含义:如果第一个数值小于都二分数值 返回 -1,就是说把o2放在o1前
}
return 0;
}
}
通过Collections.sort(userList,new MyComparator())重新排序
降序就是
if(o1.getAge()>o2.getAge()) {//升序
return -1; //代码含义:如果第一个数值大于第二个数值 返回 -1,就是说把o1放在了o2后
}
if(o1.getAge()
第三种方法:通过Collections.sort(userList,new comparator(){
重载compare方法,定义排序规则
})
public static void main(String[] args) {
List uList = new ArrayList();
uList.add(new User("夏普",22));
uList.add(new User("二货",1));
uList.add(new User("烫头的",14));
uList.add(new User("抽烟的",12));
uList.add(new User("赵本山",24));
uList.add(new User("韩晓娟",3));
uList.add(new User("王海",41));
System.out.println("排序之前:"+uList);
Collections.sort(uList, new Comparator() {
@Override
public int compare(User o1, User o2) {
if(o1.getAge()o2.getAge()) {
return -1;
}
return 0;
}
});
System.out.println("排序之后:"+uList);
}
前两种方法一定要调用Collections.sort(userList)方法才会生效。
List集合如何根据泛型中某个属性进行排序
标签:com ali 比较 tar under 对比 sdn sort 数值
原文地址:https://www.cnblogs.com/879991914li/p/12887710.html