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

Eclipse不接受集合排序

林丁雷
2023-03-14
    import java.io.BufferedReader;
    import java.util.Collections;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    import com.javaranch.common.TextFileIn;

    public class SortNames 
    {
        public static class CelebrityNamesFile
        {
            public String firstName;
            public String lastName;

            public static class CompareLastName implements Comparator< CelebrityNamesFile >
            {
                @Override
                public int compare( CelebrityNamesFile o1,  CelebrityNamesFile o2 )
                {
                    return o2.lastName.compareTo( o1.lastName );
                }
            }

        public static void main( String[ ] args ) throws IOException
        {

            ArrayList< CelebrityNamesFile > myCelebrityList;
            myCelebrityList = new ArrayList< CelebrityNamesFile >();

            TextFileIn celebrityNamesFile = new TextFileIn( "celebrityNamesFile.txt" );
            boolean doneReadingCelebrityNames = false;
            while ( ! doneReadingCelebrityNames )
            {
                 String oneName = celebrityNamesFile.readLine();
                 if ( oneName == null )
                 {
                     doneReadingCelebrityNames = true;
                 }

$Eclipse不喜欢后面的add语句,也就是说:ArrayList(SortNames.CelebrityNamesFile)类型中的方法add(SortNames.CelebrityNamesFile)不适用于参数(String)

                 else
                 {
                     myCelebrityList.add( oneName );
                 }
            }
            celebrityNamesFile.close();

$,然后它不喜欢我的sort语句,也就是说:Bound mismatch:类型集合的泛型方法sort(List T)不适用于参数(ArrayList(sortnames.CelebrityNamesFile))。推断的类型SortNames.CelebrityNamesFile不是有界参数的有效替代品(T扩展了可比(?super T))

            Collections.sort( myCelebrityList );
            System.out.println( myCelebrityList );

            Collections.sort( myCelebrityList, new CelebrityNamesFile.CompareLastName() );
            System.out.println( myCelebrityList );
}
}

}

共有1个答案

计泉
2023-03-14

对于第一个问题,问题相当简单。oneName是一个字符串myCelebrityListCelebrityNamesFile的集合-这意味着您只能将对象添加到类型为CelebrityNamesFile的集合中。

对于第二个问题,CelebrityNamesFile类没有实现Carable接口。排序要求为列表元素类型实现排序,例如为类实现可比或为排序提供比较器

 类似资料:
  • 问题内容: 给出以下作为数据类的示例: 假设我会有一个国家清单 我想将这些信息流式传输到它们的区域及其对应的名称,我想执行以下操作: 但是,该代码无法编译,因为“ getRegions”的返回值是一个Collection(列表),而不是flatMap方法接受的Stream。但是由于我知道任何Collection都可以通过其Collection.stream()方法进行流传输,所以这应该不是问题。我

  • 问题内容: 我有一个Java集合: 现在在显示列表之前有一个字段,我想按此排序此集合。 有什么办法可以做到吗? 问题答案: 使用比较器: 此外,如果实现,则只需使用 使用JDK 8,语法要简单得多。 更简单 最简单的 显然,初始代码也可以用于JDK 8。

  • 问题内容: 我找不到使用此方法的任何示例,所有示例都给出了第二个参数“ null”。我听说此方法用于根据多个标准对类进行排序,但找不到示例。 对于本课程,如果我想根据学生的姓名和年龄对学生列表进行排序,如何使用方法Collections sort(List,Comparator) 问题答案: 在你现有的学生班级的基础上,这通常是我的工作方式,尤其是当我需要多个比较器时。 用法: 编辑 自Java

  • 主要内容:1 集合元素的排序,2 Collections sort方法,3 字符串正序排序,4 字符串倒序排序,5 包装类型排序,6 自定义对象排序1 集合元素的排序 我们可以对以下元素进行排序: 字符串对象 包装类对象 用户自定义对象 Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。 2 Collections so

  • 这是我的蓝图代码。 内部消息工作。 外部消息不工作。 我在docker中运行Red Hat AMQ 7和Fuse 7。内部消息队列在服务之间正常工作。 使用AMQ 6,当在activemq中设置时,我能够向61613上的嵌入式代理发送和接收STOMP消息。xml 现在,我正在使用AMQ 7.0的默认设置,它将接受程序设置为0.0.0.0:61616和61613,这两个接受STOMP协议。 但是相同

  • 问题内容: 您需要有关Java集合排序的帮助。它给了我这个错误: 我的代码如下: 我做错什么了吗? 问题答案: 您不能对未实现该接口的对象列表进行排序。或者说,可以,但你必须提供的方法。 考虑一下:如何在不知道WifiSSID小于或大于另一个WifiSSID的情况下对列表进行排序? 你想用 编辑: 您定义了自己的专有接口,并在中实现了该专有Comparator接口。想要一个实例。它不是您不知道的专