Grundsätzlich hat mein Partner gesagt, dass ich meinen Code kürzer machen könnte, indem ich auf andere Weise überprüfe, ob ein int-Array ein int enthält, obwohl er mir nicht sagt, was es ist: P.
Aktuell:
public boolean contains(final int[] array, final int key) {
for (final int i : array) {
if (i == key) {
return true;
}
}
return false;
}
Habe dies auch versucht, obwohl es aus irgendeinem Grund immer false zurückgibt.
public boolean contains(final int[] array, final int key) {
return Arrays.asList(array).contains(key);
}
Könnte mir jemand helfen?
Danke dir.
Hashset
anhand Wiederaufnahmeverfahren Mechanismus Antwort. Es ist der schnellste Weg.ArrayList
Die Implementierung macht das Gleiche.Antworten:
Hier ist die Java 8-Lösung
quelle
Sie könnten einfach
ArrayUtils.contains
von verwendenApache Commons Lang library
.quelle
ArrayUtils.contains()
Teil derApache Commons Lang
Bibliothek ist. Obwohl dies eine großartige Bibliothek ist, ist es wahrscheinlich immer noch keine gute Idee, eine externe Abhängigkeit hinzuzufügen, um zu überprüfen, ob das Array ein Element enthält: DEs ist weil
Arrays.asList(array)
RückkehrList<int[]>
.array
Das Argument wird als ein Wert behandelt, den Sie umbrechen möchten (Sie erhalten eine Liste der Ints-Arrays), nicht als vararg.Beachten Sie, dass es funktioniert die Arbeit mit Objekttypen (nicht Primitiven):
oder auch:
Aber Sie können nicht haben
List<int>
und Autoboxing funktioniert hier nicht.quelle
Guave bietet zusätzliche Methoden für primitive Typen. Darunter befindet sich eine Methode, die dieselben Argumente wie Ihre verwendet.
Sie können die Guavenversion auch statisch importieren.
Siehe Erklärte Guavenprimitive
quelle
Ein anderer Weg:
Dadurch wird das übergebene Array geändert. Sie hätten die Möglichkeit, das Array zu kopieren und am ursprünglichen Array zu arbeiten, dh
int[] sorted = array.clone();
dies ist nur ein Beispiel für Funktionscode. Die Laufzeit ist wie
O(NlogN)
du bistO(N)
quelle
contains
Methode mein Array modifizieren würde.-1
wenn es wahr sein soll. "Die Einfügemarke ist definiert als der Punkt, an dem der Schlüssel in die Liste eingefügt wird: der Index des ersten Elements, der größer als der Schlüssel ist, oder list.size (), wenn alle Elemente in der Liste kleiner als der angegebene Schlüssel sind. ". Muss sagen>= 0
.Ich weiß, dass es super spät ist, aber versuche es
Integer[]
stattdessenint[]
.quelle
1. einmalige Verwendung
2. Verwenden Sie HashSet zur Leistungsüberlegung, wenn Sie mehr als einmal verwenden.
quelle
Versuche dies:
quelle
Sie können Ihr primitives int-Array mit dem folgenden Java 8-Code in eine Arrayliste von Ganzzahlen konvertieren.
Verwenden Sie dann die
contains()
Methode, um zu überprüfen, ob die Liste ein bestimmtes Element enthält.quelle
Dies funktionierte in Java 8
quelle
Mit
java.util.Arrays
class können Sie das ArrayT[?]
in einList<T>
Objekt mit folgenden Methoden transformierencontains
:quelle
Abhängig davon, wie groß Ihr Array von int sein wird, erzielen Sie eine viel bessere Leistung, wenn Sie Sammlungen verwenden und
.contains
nicht einzeln über das Array iterieren:quelle
Lösung Nr. 1
Da die ursprüngliche Frage nur eine vereinfachte (und keine schnellere) Lösung wünscht, ist hier eine einzeilige Lösung:
Erläuterung: Javadoc von
Arrays.toString()
Zuständen, bei denen das Ergebnis in eckigen Klammern steht und benachbarte Elemente durch die Zeichen "," (ein Komma gefolgt von einem Leerzeichen) getrennt sind. Darauf können wir also zählen. Zuerst konvertieren wirarray
in eine Zeichenfolge und prüfen dann, obkey
diese Zeichenfolge enthalten ist. Natürlich können wir keine "Subnummern" akzeptieren (z. B. "1234" enthält "23"), daher müssen wir nach Mustern suchen, denenkey
eine öffnende Klammer oder ein Leerzeichen vorangestellt ist, gefolgt von einer schließenden Klammer oder einem Komma.Hinweis: Das verwendete Regexp-Muster behandelt auch negative Zahlen ordnungsgemäß (deren Zeichenfolgendarstellung mit einem Minuszeichen beginnt).
Lösung Nr. 2
Diese Lösung ist bereits veröffentlicht, enthält jedoch Fehler. Daher poste ich die richtige Lösung:
Auch diese Lösung hat einen Nebeneffekt: Sie modifiziert die
array
(sortiert sie).quelle
Versuchen
Integer.parseInt()
Sie dies zu tun .....quelle