Richtig entfernen eine Ganzzahl aus einer Liste<Integer>

Hier ist eine schöne Falle, die ich gerade erlebt.
Betrachten Sie eine Liste von Integer-zahlen:

List<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(6);
list.add(7);
list.add(1);

Jede Vermutung darüber, was passiert, wenn Sie ausführen list.remove(1)? Was list.remove(new Integer(1))? Dies kann dazu führen, einige böse bugs.

Was ist der richtige Weg, um zu differenzieren zwischen remove(int index), die entfernt ein element aus dem gegebenen index und remove(Object o), das entfernen eines Elementes durch Verweis, wenn Sie sich mit Listen von ganzen zahlen?


Der wichtigste Punkt zu beachten ist hier das man @Nikita erwähnt - exakt passenden parameter hat Vorrang vor auto-boxing.

A: das eigentliche Problem hier ist, dass jemand bei der Sonne irgendwie dachte, mit (unveränderlichen) - wrapper-Klassen um primitive schlau war und später auf jemand dachte, dass der auto-(un -) Boxen war noch schlauer... UND DASS die LEUTE MIT LAHMEN STANDARD-APIs, WENN BESSERE VORHANDEN. Für viele Zwecke gibt es Art besser die Lösung über new Arraylist<Integer>. Beispielsweise Fundgrube bietet Dinge, die ein TIntArrayList. Je mehr ich das Programm in Java (SCJP seit 2001), die ich weniger Verwendung von wrapper-Klassen und je mehr ich gut-entworfenen APIs (Fundgrube, Google, etc. in den Sinn kommt).

InformationsquelleAutor Yuval Adam | 2010-12-26

Schreibe einen Kommentar