gpt4 book ai didi

java - 比较和排序数组列表中的对象,java

转载 作者:行者123 更新时间:2023-11-30 06:53:51 24 4
gpt4 key购买 nike

我有一个 ArrayListStudent 对象组成。这些对象包含名字、姓氏、实验室成绩、项目成绩、考试成绩和总成绩。我正在尝试编写一个函数,根据总成绩对 ArrayList 中的 Student 对象进行排序。

这是我的学生类(class):

public class Student {

// fields
private String firstname;
private String lastname;
private int labgrade;
private int projectgrade;
private int examgrade;
private int totalgrade;

// constructor
public Student(String firstname, String lastname, int labgrade,
int projectgrade, int examgrade) {
this.firstname = firstname;
this.lastname = lastname;
this.labgrade = labgrade;
this.examgrade = examgrade;
this.totalgrade = labgrade + projectgrade + examgrade;
}

// method
public String toString() {
String s = firstname + " " + lastname + " has a total grade of "
+ totalgrade;
return s;
}
public int compareTo(Student s) {
return (totalgrade = s.totalgrade);
}

下面是我尝试做的排序:

private ArrayList<Student> arraylist = new ArrayList<Student>();
public void SortStudent() {
Collections.sort(arraylist);
}

但这不起作用,因为它说它只能在 List 上工作,而不能在 ArrayList 上工作。对修复我的 SortStudent 方法有什么帮助吗?

最佳答案

ArrayListList ,问题是 Student不执行 Comparable ,并且您没有定义 compareTo方法,您需要使用 sort方法来自 Collections .
你可以做类似的事情:

public class Student implements Comparable<Student> {
//... the rest of the class
public int compareTo(Student s) {
return Integer.compare(this.grade, s.grade);
}
}

另一种选择是将 lambda 表达式与方法 Collections.sort(List<T>, Comparator<? super T> c) 结合使用,你不需要实现 Comparable :

public void sortStudent() {
Collections.sort(arraylist, (s1, s2) -> Integer.compare(s1.grade, s2.grade));
}

关于java - 比较和排序数组列表中的对象,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com