Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Collections.sort()方法未正确拾取重载方法_Java_Generics_Collections - Fatal编程技术网

Java Collections.sort()方法未正确拾取重载方法

Java 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(

我的目标是对名单进行排序。我正在使用比较器接口的比较方法

我创建了三个类。即 Person.java, AgeComparator.java, SortingExample.java AgeComparator.java

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())
    集合。排序
    太常见

  • ClassPerson位于com.nadee。module3和ClassAgeComparator用于这类人

    但是在类排序示例中,您使用的是com.nadee.collections.Person中的Person。它应该完全不起作用。 代码的另一点:

    • 请使用
      actors.sort(new AgeComparator())
      集合。排序
      太常见


    您导入了
    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我正在查询“太普通”一词。为什么有些东西是“普通的”(这是“一般的”还是“经常使用的”?)那么重要呢?是什么让它变得如此过度呢?在我看来,即使只是一段代码,“如果可以,一切都应该清楚”。有人查看并使用我的代码,他们可以自由地做他们想做的事情,而不必担心。没有理由建议你使用你认为不必要的东西,伙计。