gpt4 book ai didi

java - 通过java中的两个属性键将(最小)对象保留在集合中

转载 作者:行者123 更新时间:2023-12-01 11:26:20 24 4
gpt4 key购买 nike

例如,我有一个包含 3 个对象的列表:

List<Student> studentList= new ArrayList<Student>();
list.add(new Student("name1", 5);
list.add(new Student("name3", 6);
list.add(new Student("name1", 7);

class Student{ String name; Integer grade;}

我的过滤逻辑:如果名称相等,那么我需要过滤掉具有最高等级的对象 - 因此保留最低等级。

而且我不知道集合中有重复的名称。

我坚持这个实现:

Set<Student> setStudents= new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student st1, Student st2) {
int compareName= st1.getName().compareTo(st2.getName());
if (compareName== 0){
int compareGrade = st1.getGrade().compareTo(st2.getGrade());
// ?

}
return compareName;
}
});
setStudents.addAll(studentList);

预期输出:

列出

Student("name1", 5)
Student("name3", 6);

谢谢

最佳答案

我会将成绩封装在一个单独的类中。另外,我不会使用列表,它对于您的用例来说是一种低效的存储机制。我会做这样的事情:

public class Grades {

private Map<String, Integer> store = new HashMap<>();

public void storeMinimumGrade(Student student) {
Integer grade = store.get(student.getName());
if(grade == null || student.getGrade() < grade) {
grade.put(name, grade);
}
}
}

以上内容对您有用吗?

关于java - 通过java中的两个属性键将(最小)对象保留在集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775544/

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