当前位置: 首页 > 知识库问答 >
问题:

按对象参数-整数对对象的数组列表进行排序

毛宏达
2023-03-14
//This Sorts with String parameters
public void sortArrayListByName()
{
    Collections.sort(sList,new Comparator<Student>() {
         public int compare(Student s1, Student s2) {
                 return s1.getName().compareTo(s2.getName());
         }
     });
}
//This should sort the Arraylist of Objects
public void sortArrayListByAge()
{
    Collections.sort(sList,new Comparator<Student>() {
         public int compare(Student s1, Student s2) {
                 return s1.getAge().compareToIgnoreCase(s2.getAge()); //This Part gives me errors
         }
     });
}

但我得到一条错误消息,说无法在原语类型int上调用compareToIgnoreCase(int)

我如何修复这段代码,使它能够用整数值对列表进行排序?

共有1个答案

童化
2023-03-14

您正在比较int值,这些值是基元类型,int没有任何方法。这就是s1.getAge().CompareToIgnoreCase(s2.getAge())失败的原因。

如果您碰巧使用Java7或之前版本,请使用integer#compare:

public int compare(Student s1, Student s2) {
    return Integer.compare(s1.getAge(), s2.getAge()); 
}

否则,手动比较int变量(代码改编自integer#compare源代码,不需要重新发明轮子):

public int compare(Student s1, Student s2) {
    return (s1.getAge() < s2.getAge()) ? -1 : ((s1.getAge() == s2.getAge()) ? 0 : 1); 
}
 类似资料:
  • 问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。

  • 问题内容: 比方说你有一个的对象。 如果它们都具有int GoalScored变量,则如何排序?你如何按GoalScored排序? 问题答案: 你可以使用Collections.sort自定义Comparator 。 比较部分也可以这样写: 或者,你可以制作。这定义了所有对象的自然顺序。使用a 更灵活,因为不同的实现可以按名称,年龄等进行排序。

  • 问题内容: 我想对整数的arraylist的arraylist进行排序,需要帮助吗? 我被告知,我需要实现比较器或可比对象,然后使用collection.sort对列表列表进行排序… 问题答案: 没有错误检查空列表,但是这里是。 使用Java 8,它变得更加简洁:

  • 问题内容: 我有一个包含一个称为的对象的数组,它具有诸如“日期”,“名称”等属性。 我正在对数组进行排序,如下所示: 应该将日期从新到旧排序。例如: 2016年6月30日 2016年6月29日 等等.. 但是,当我的数组包含“ 2016年7月2日”时,排序后的数组将变为: 2016年6月30日 2016年6月29日 2016年7月2日 排序后,“ 2016年7月2日”应该位于顶部,而现在位于底部?

  • 问题内容: 我需要通过对象属性之一的一个属性比较对象数组。 我在做 : 它没有编译,有人知道怎么做吗? 谢谢。 问题答案: 这是代码中导致错误的部分 您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。对任何类型的对象的方法的引用如下所示: 但是方法引用不是对象,并且没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能) 另外,方法引用不是类,因此您不能从它们中获取另一个方法引

  • 问题内容: 在Swift 2.0中,您将如何按属性对自定义对象数组进行排序?我知道在Swift 1.2中,这是使用sorted()和sort()完成的。但是,这些方法在Xcode 7 beta 4中不再起作用。谢谢! 例如: 问题答案: 在Swift 2中: 您可以使用方法,使用来比较两个日期: 或者,如果您想对原始数组进行排序,则可以: 在Swift 3中 返回数组的排序形式,请使用,而不是 排