Ich frage mich, wie die Methode indexOf einer ArrayList implementiert ist. In der Tat habe ich die Methode equals wie dies außer Kraft setzen:[Java] Ist indexOf gleich?
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;
}
}
Ich obwohl dies mich vermeiden wird auch die indexOf Methode außer Kraft zu setzen, aber es scheint, dass ich völlig falsch bin. Wenn ich versuche,
ArrayList<CustomObject> customObjects = new ArrayList<CustomObject>
... insert customobject into the arraylist ...
customObjects.indexOf(new String("name"))
indexOf return false, aber es sollte true zurückgeben. (Ich habe das Element überprüft, das ich suche.)
Bin ich total falsch?
* „Ich habe mich gefragt, wie die Methode indexOf eines Arraylist implementiert ist“ * Sie müssen nicht wissen, wie es ist * * implementiert, die Sie benötigen zu wissen, was der Vertrag ist. Dafür gibt es ein Tool: [The JavaDoc] (http://docs.oracle.com/javase/8/docs/api/java/util/List.html#indexOf-java.lang.Object-), das sagt: * "Gibt den Index des ersten Vorkommens des angegebenen Elements in dieser Liste zurück, oder -1, wenn diese Liste das Element nicht enthält. Formal gibt er den niedrigsten Index i zurück, so dass" (o == null? Get (i) == null: o.equals (get (i))) ', oder -1 wenn es keinen solchen Index gibt." * –