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方法不适用于参数(String)
else
{
myCelebrityList.add( oneName );
}
}
celebrityNamesFile.close();
$然后它不喜欢我的排序语句,即: 边界不匹配:类型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's Beginning Java 7。仍然一筹莫展。
该程序的目的是从txt文件中读取姓名,将其添加到ArrayList中,按自然顺序打印ArrayList,按姓氏排序ArrayList,再次打印列表。
import
语句,它们只会使代码变得模糊不清。如果需要更长的散文,请参考之前指出的行。 - millimoose