List集合中的对象根据属性排序
2017-07-01 11:39
537 查看
集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:
[html] view
plain copy
package test.tool.gui.dbtool.util;
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) {
List<Student> list = new ArrayList<Student>();
//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
Student s1 = new Student();
s1.setAge(20);
Student s2 = new Student();
s2.setAge(19);
Student s3 = new Student();
s3.setAge(21);
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("排序前:"+list);
Collections.sort(list, new Comparator<Student>(){
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
*/
public int compare(Student o1, Student o2) {
//按照学生的年龄进行升序排列
if(o1.getAge() > o2.getAge()){
return 1;
}
if(o1.getAge() == o2.getAge()){
return 0;
}
return -1;
}
});
System.out.println("排序后:"+list);
}
}
class Student{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getAge()+"";
}
}
执行结果:
[html] view
plain copy
排序前:[20, 19, 21]
排序后:[19, 20, 21]
当然对象的属性可以多个,比如按年龄升序,按成绩降序等
[html] view
plain copy
package test.tool.gui.dbtool.util;
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) {
List<Student> list = new ArrayList<Student>();
//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
Student s1 = new Student();
s1.setAge(20);
Student s2 = new Student();
s2.setAge(19);
Student s3 = new Student();
s3.setAge(21);
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("排序前:"+list);
Collections.sort(list, new Comparator<Student>(){
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
*/
public int compare(Student o1, Student o2) {
//按照学生的年龄进行升序排列
if(o1.getAge() > o2.getAge()){
return 1;
}
if(o1.getAge() == o2.getAge()){
return 0;
}
return -1;
}
});
System.out.println("排序后:"+list);
}
}
class Student{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getAge()+"";
}
}
执行结果:
[html] view
plain copy
排序前:[20, 19, 21]
排序后:[19, 20, 21]
当然对象的属性可以多个,比如按年龄升序,按成绩降序等
相关文章推荐
- C#中对List<Object>泛型集合,根据对象的某一属性进行升序排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- list集合根据对象属性排序举例
- Java面试题,List集合中根据对象的某一属性排序
- List集合中的对象根据属性排序
- List集合根据存储对象的属性字段排序实现
- List集合中的对象根据属性排序
- List集合中的对象根据属性排序
- List<T>泛型集合根据对象的某一属性排序
- List集合中删除属性(一个或者多个属性)相同的对象返回List且根据对象属性进行排序输出
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- List集合中的对象根据属性排序
- 对象集合list根据对象属性排序2015-8-16
- 泛型集合排序,根据实体类对象的某个属性排序
- 技能库--List中根据对象的多个属性排序(122)
- List集合对象中按照不同属性大小排序的实例