java的list集合如何根据对象中的某个字段排序

Python014

java的list集合如何根据对象中的某个字段排序,第1张

下面的代码是根据学生年龄排序学生list 的一个例子:

import java.util.ArrayList

import java.util.List

class Student {

private String name

private int age

public Student(String name, int age) {

this.name = name

this.age = age

}

public String getName() {

return name

}

public void setName(String name) {

this.name = name

}

public int getAge() {

return age

}

public void setAge(int age) {

this.age = age

}

@Override

public String toString() {

return "Perosn [name=" + name + ", age=" + age + "]"

}

}

public class App {

 

    public static void main(String[] args) {

    

     List<Student> students = new ArrayList<>()

    

     students.add(new Student("abc", 12))

     students.add(new Student("bcd", 20))

     students.add(new Student("cde", 17))

     students.add(new Student("def", 25))

     students.add(new Student("efg", 15))

    

     students.sort((x, y) -> Integer.compare(x.getAge(), y.getAge()))

    

     for (Student stu : students) {

     System.out.println(stu)

     }

    }

}

运行结果:

最近这么多人问排序的问题啊,都快回答腻了,你可以先搜一搜看看别的网站有没有,不过既然都回答了,我就估且再发些代码吧,这里只用String的List排序,如果用到复杂的对象你自己懂得变通吧

public class SortList {

private static DateFormat df = new SimpleDateFormat("yyyy-MM-dd")

public static void main(String[] args) {

List<String> dates = new ArrayList<String>()

dates.add("2014-10-02")

dates.add("2013-12-01")

dates.add("2014-11-02")

dates.add("2014-01-05")

Collections.sort(dates, new Comparator<String>() {

@Override

public int compare(String o1, String o2) {

Date d1 = null, d2 = null

try {

d1 = df.parse(o1)

} catch (ParseException e) {

e.printStackTrace()

}

try {

d2 = df.parse(o2)

} catch (ParseException e) {

e.printStackTrace()

}

if(null == d1 || null == d2) {

return 0

}

return d1.compareTo(d2)

}

})

System.out.println(dates)

}

}

根据字符串的含义,进行对象化,比如,Student,有三个属性,序号,姓名,分数

注意重写Student的Compareable接口

然后,List<String>变成List<Student>students=new ArrayList<Student>

然后,遍历list,算出平均分,放入新的SortList<Student>

打印结果