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();
$ そして、それは私の並べ替えステートメントが好きではありません: バウンドの不一致: 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 ファイルから名前を読み取り、それらを arraylist に追加し、arraylist を自然な順序で出力し、arraylist を姓でソートし、リストを再度出力することです。