次の簡単なテストを試しました。
class ZiggyTest{
public static void main(String[] args){
List<Cities> cities3 = new ArrayList<Cities>();
Cities city = new Cities("London");
cities3.add(new Cities("Manchester"));
cities3.add(new Cities("Glasgow"));
cities3.add(new Cities("Leeds"));
cities3.add(city);
cities3.add(new Cities("Leicester"));
cities3.add(new Cities("Croydon"));
cities3.add(new Cities("Watford"));
System.out.println("IndexOf(new Croydon) "
+ cities3.indexOf(new Cities("Croydon")));
System.out.println("IndexOf(city) "
+ cities3.indexOf(city));
}
}
class Cities implements Comparable<Cities>{
String title;
Cities(String aTitle){
this.title = aTitle;
}
public String getTitle(){
return title;
}
public String toString(){
return "Title : " + title;
}
public int compareTo(Cities c){
return title.compareTo(c.getTitle());
}
}
上記のテストの出力は次のとおりです。
IndexOf(new Croydon) -1
IndexOf(city) 3
2行目が3を生成している理由はわかりますが、1行目がtitle="Croydon"の新しい行を見つけられない理由はわかりません。
APIは、indexOf
メソッドを次のように記述します
このリストで指定された要素が最初に出現するインデックスを返します。このリストに要素が含まれていない場合は-1を返します。
(o==null ? get(i)==null : o.equals(get(i)))
より正式には、、または-1
そのようなインデックスがない場合は、のような最小のインデックスiを返します。
APIは、オブジェクトがnullの場合、リストからnullオブジェクトが最初に出現した場合のインデックスを返すと言っていると思います。nullでない場合は、渡されたオブジェクトequalsメソッドがtrueを返す最初のオカレンスのインデックスを返します。
作成されたオブジェクトは、cities3.indexOf(new Cities("Croydon")
以前に追加されたオブジェクトと同じである必要がありますcities3.add(new Cities("Croydon"));
か?