Java Collections.sort()方法未正确拾取重载方法
我的目标是对名单进行排序。我正在使用比较器接口的比较方法 我创建了三个类。即 Person.java, AgeComparator.java, SortingExample.java AgeComparator.javaJava Collections.sort()方法未正确拾取重载方法,java,generics,collections,Java,Generics,Collections,我的目标是对名单进行排序。我正在使用比较器接口的比较方法 我创建了三个类。即 Person.java, AgeComparator.java, SortingExample.java AgeComparator.java package com.nadee.module3; 导入java.util.Comparator; 公共类AgeComparator实现了Comparator{ @凌驾 公共整数比较(左、右){ 返回整数.compare(left.getAge(),right.getAge(
package com.nadee.module3;
导入java.util.Comparator;
公共类AgeComparator实现了Comparator{
@凌驾
公共整数比较(左、右){
返回整数.compare(left.getAge(),right.getAge());
}
}
SortingExample.java
package com.nadee.module3;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
导入com.nadee.collections.Person;
公共类排序示例{
公共静态void main(字符串[]args){
人员p1=新人(“威尔·史密斯”,45岁);
人p2=新人(“约翰·斯诺”,33岁);
人员p3=新人员(“约翰尼深度”,55);
List actors=new ArrayList();
添加(p1);
添加(p2);
添加(p3);
System.out.println(actors);
sort(actors,newagecomparator());
System.out.println(actors);
}
}
我正在为这个应用程序使用EclipseIDE,在sort方法下显示“红线”
sort
错误是这样说的:
类型集合中的方法排序(List,Comparator)不适用于参数(List,AgeComarator)
我关注了下面的文章
我做错了什么?任何帮助都将不胜感激
感谢ClassPerson位于com.nadee。module3和ClassAgeComparator用于这类人 但是在类排序示例中,您使用的是com.nadee.collections.Person中的Person。它应该完全不起作用。 代码的另一点:
- 请使用
actors.sort(new AgeComparator())代码>,
太常见集合。排序
- 请使用
actors.sort(new AgeComparator())代码>,
太常见集合。排序
ClassPerson位于com.nadee。module3和ClassAgeComparator用于这类人 但是在类排序示例中,您使用的是com.nadee.collections.Person中的Person。它应该完全不起作用。 代码的另一点:
import com.nadee.collections.Person
,但您向我们展示的Person类位于不同的包中-com.nadee.module3
。输入错误?当所有3个类都在同一个包中时,此代码可以正常工作。换句话说,Agecomparator
用于一个类…collections3.Person
,而列表中包含一个不同的…collection.Person
注意,您可以使用Comparator.comparating(Person::getAge)
@Eran,是的,我从错误的包导入。您导入了import com.nadee.collections.Person
,但您显示给我们的Person类位于不同的包中-com.nadee.module3
。输入错误?当所有3个类都在同一个包中时,此代码可以正常工作。换句话说,Agecomparator
用于一个类…collections3.Person
,而列表中包含一个不同的…collection.Person
注意,您可以使用Comparator.comparating(Person::getAge)
@Eran,是的,我从错误的包装中进口。我真傻。谢谢@Tea NG,这是导入问题,我能够解决。什么是“Collections.sort
太常见”呢?考虑到集合,您可以直接调用List.sort
,这是对的。sort
委托给它;“我只是不明白你说的那句话是什么意思。目前,我正在使用Java8。如果您也使用Java8,您将看不到Collections.sort(自jdk1.2以来)和List.sort(自jdk8以来)之间的区别。在Java旧版本Collections.sort中,查看Java 7的签出链接有点不同。您可以阅读此信息以了解更多信息:@TeaNG我正在查询“太普通”一词。为什么有些东西是“普通的”(这是“一般的”还是“经常使用的”?)那么重要呢?是什么让它变得如此过度呢?在我看来,即使只是一段代码,“如果可以,一切都应该清楚”。有人查看并使用我的代码,他们可以自由地做他们想做的事情,而不必担心。没有理由建议你用一些你认为不必要的东西,老兄。我真傻。谢谢@Tea NG,这是导入问题,我能够解决。什么是“Collections.sort
太常见”呢?考虑到集合,您可以直接调用List.sort
,这是对的。sort
委托给它;“我只是不明白你说的那句话是什么意思。目前,我正在使用Java8。如果您也使用Java8,您将看不到Collections.sort(自jdk1.2以来)和List.sort(自jdk8以来)之间的区别。在Java旧版本Collections.sort中,查看Java 7的签出链接有点不同。您可以阅读此信息以了解更多信息:@TeaNG我正在查询“太普通”一词。为什么有些东西是“普通的”(这是“一般的”还是“经常使用的”?)那么重要呢?是什么让它变得如此过度呢?在我看来,即使只是一段代码,“如果可以,一切都应该清楚”。有人查看并使用我的代码,他们可以自由地做他们想做的事情,而不必担心。没有理由建议你使用你认为不必要的东西,伙计。