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(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 文件中读取名称,将它们添加到 arraylist,以自然顺序打印 arraylist,按姓氏对 arraylist 进行排序,再次打印列表。