Мне было интересно, как реализуется метод indexOf ArrayList. На самом деле у меня есть переопределить метод Equals так:[Java] Использует ли indexOf равные?
public class CustomObject {
@Override
public boolean equals(Object o) {
if(o instanceof CityLoader)
return ((CityLoader)o).getName() == this.name;
else if (o instanceof String)
return this.name.equals((String)o);
return false;
}
}
я, хотя это позволит избежать меня переопределить также метод IndexOf но, кажется, я совершенно неправильно. Когда я пытаюсь
ArrayList<CustomObject> customObjects = new ArrayList<CustomObject>
... insert customobject into the arraylist ...
customObjects.indexOf(new String("name"))
IndexOf возвращает ложь, но она должна возвращать верно. (Я проверил элемент, который я ищу)
Я совершенно не прав?
* «Мне было интересно, как метод IndexOf из ArrayList реализован» * Вам не нужно знать, как это * реализовано *, что вам нужно знать, что такое контракт. Для этого есть инструмент: [JavaDoc] (http://docs.oracle.com/javase/8/docs/api/java/util/List.html#indexOf-java.lang.Object-), в котором говорится: * "Возвращает индекс первого вхождения указанного элемента в этом списке или -1, если этот список не содержит элемент. Более формально возвращает самый низкий индекс i, такой что' (o == null? Get (i) == null: o.equals (get (i))), или -1, если такого индекса нет. * * –