gpt4 book ai didi

java - 按特定属性对对象进行排序

转载 作者:行者123 更新时间:2023-12-01 08:47:54 25 4
gpt4 key购买 nike

我想比较两门类(class)并按类(class)名称的字母顺序对它们进行排序,但是我注意到我不能使用“<”或“">”。是否有另一种方法来比较类(class)是否应该大于或小于另一个类(class)。

import java.util.Comparator;

/**
* A class that overrides the natural order comparison of courses to order
* them alphabetically by course name.
*
*/
public class CourseComparator implements Comparator<Course> {
@Override
public int compare(Course o1, Course o2) {
if(o1.getName() == o2.getName()){
return o1.compareTo(o2);
if(o1.getName() < o2.getName())
return 1;
return -1;
}
}

最佳答案

运算符

  • ==如果两个操作数都是原始数据类型,它将进行值比较。字符串是一个类而不是原始数据类型。

  • < >是运算符,并且仅适用于原始数据类型,如 int、double ...

对象比较

  • ==如果它们是同一对象,则将与对象进行比较。

  • .equals(Object o)如果值相同,将比较两个对象。因此,您可以重载此方法,您必须检查该类的作者所说的“等于”是什么意思。对于字符串类 .equals表示相同的字符串。

  • .compareTo(String s)就是before(-),after(+),equals(0)意义的String比较。

你的例子

仅使用.compareTo两者.getName()

public class CourseComparator implements Comparator<Course> {
@Override
public int compare(Course o1, Course o2) {
return o1.getName().compareTo(o2.getName());
}
}

界面相当

顺便说一下,你可以实现Interface ComparableArrays.sort(Object[] a) 的排序选项或Collections.sort(List<T> list))不需要比较器。

public class Course implements Comparable<Course> {
...
@Override
public int compareTo(Course otherCourse) {
return getName().compareTo(otherCourse.getName());
}
}

关于java - 按特定属性对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562760/

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