1

現在、Java でリストを操作する方法を学んでいます。Collections.sort() メソッドを使用してリスト内の文字列をソートすることに遭遇しましたが、それは正常に機能します。ただし、ユーザー定義のデータ型を作成すると、ソートされず、エラーが発生

します。仮引数リストの長さが異なります) メソッド Collections.sort(List) は適用されません (推論された型は、宣言されたバインドに準拠していません。推論: 子のバインド: 比較可能) ここで、T#1、T#2 は変数: T#1 は、メソッド sort(List,Comparator) で宣言された Object を拡張します。T#2 は、メソッド sort(List) で宣言された Comparable を拡張します」

ここにコードがあります -

コード -

package works;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Collections;

class Child 
{
private String name;
public Child(String name)
{
    this.name=name;
}
@Override
public String toString()
{
    return name;
}
}
class LOL
{
void Meth()
{
    Child s1 = new Child("Hi");
    Child s2 = new Child("Bye");
    Child s3 = new Child("And");
    List<Child> f1 = Arrays.asList(s1,s2,s3);
    System.out.println(f1);
    System.out.println();
    Collections.sort(f1);  // This line is the erroneous line.
}
}
public class SortColl
{
public static void main(String X[])
{
    LOL l = new LOL();
    l.Meth();

}
}
4

2 に答える 2

4

オブジェクトのコレクションを並べ替えるには、次のいずれかを満たす必要があります。

  1. オブジェクトは を実装する必要がありますComparable。この場合、実装しComparable<Child>ます。次に、メソッドCollections.sortを使用して並べ替えることができます。compareTo
  2. Comparator特にを実装する独自のクラスを作成しComparator<Child>、そのクラスのインスタンスを 2 番目のパラメータとして に渡しますCollections.sort。次に、ソート アルゴリズムは を使用しComparatorてコレクションをソートします。
于 2013-08-23T16:40:40.410 に答える