gpt4 book ai didi

java - Eclipse 不接受集合排序

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:15 24 4
gpt4 key购买 nike

    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();

$然后它不喜欢我的排序语句,即:绑定(bind)不匹配:Collections 类型的通用方法 sort(List T) 不适用于参数 (ArrayList (SortNames.CelebrityNamesFile))。推断类型 SortNames.CelebrityNamesFile 不是有界参数的有效替代(T extends Comparable(? super T))

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

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

我做错了什么?我在这里阅读了很多帖子,阅读了关于比较器的 Java 文档,阅读了关于比较器的 Java 教程。 Head First Java,Ivor Horton 的 Java 7 入门。仍然一无所知。

该程序的目的是从 txt 文件中读取姓名,将它们添加到数组列表中,以其自然顺序打印数组列表,按姓氏对数组列表进行排序,然后再次打印列表。

最佳答案

第一期,问题比较简单。 oneName 是一个 StringmyCelebrityListCelebrityNamesFile 的集合 - 这意味着您只能将对象添加到CelebrityNamesFile 类型的集合。

对于第二个问题,你的问题是 CelebrityNamesFile 类没有实现 Comparable 接口(interface)。排序要求为列表元素类型实现排序,例如通过为类实现 Comparable 或为 sort 提供 Comparator

关于java - Eclipse 不接受集合排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com