//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)
我如何修复这段代码,使它能够用整数值对列表进行排序?
您正在比较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中 返回数组的排序形式,请使用,而不是 排