Ich habe mich gefragt, ob es besser ist, eine Methode dafür zu haben und die Array
an diese Methode zu übergeben oder jedes Mal auszufüllen, wenn ich überprüfen möchte, ob eine Zahl in der array
steht.
Zum Beispiel:
public static boolean inArray(int[] array, int check) {
for (int i = 0; i < array.length; i++) {
if (array[i] == check)
return true;
}
return false;
}
Danke für die Hilfe im Voraus!
Sie sollten diese Logik auf jeden Fall in eine Methode einkapseln.
Es hat keinen Vorteil, identischen Code mehrmals zu wiederholen.
Wenn Sie die Logik in einer Methode platzieren und sich ändern, müssen Sie Ihren Code nur an einer Stelle ändern.
Ob Sie eine Drittanbieter-Bibliothek verwenden möchten oder nicht, ist eine völlig andere Entscheidung.
Seit mindestens Java 1.5.0 (Java 5) kann der Code etwas aufgeräumt werden. Array
s und alles, was Iterator
(z. B. Collection
s) implementiert, kann als Schleife ausgeführt werden:
public static boolean inArray(int[] array, int check) {
for (int o : array){
if (o == check) {
return true;
}
}
return false;
}
In Java 8 können Sie auch Folgendes tun:
// import Java.util.stream.IntStream;
public static boolean inArray(int[] array, int check) {
return IntStream.of(array).anyMatch(val -> val == check);
}
Obwohl das Konvertieren in einen Stream dafür wahrscheinlich überflüssig ist.
Wenn Sie ein Array (und ein reines Array) verwenden, wird nach O(N)
gesucht, da im schlimmsten Fall das gesamte Array durchlaufen werden muss. Wenn das Array nun sortiert ist, können Sie eine binäre Suche verwenden, wodurch sich die Suchzeit mit dem Mehraufwand der Sortierung auf log(N)
verringert.
Wenn dies wiederholt aufgerufen wird, platzieren Sie es in einer Funktion:
private boolean inArray(int[] array, int value)
{
for (int i = 0; i < array.length; i++)
{
if (array[i] == value)
{
return true;
}
}
return false;
}
Sie können die lib org.Apache.commons.lang.ArrayUtils importieren
Es gibt eine statische Methode, bei der Sie ein int-Array übergeben können und einen Wert, auf den Sie prüfen möchten.
enthält (int [] -Array, int valueToFind) Überprüft, ob der Wert im angegebenen Array liegt.
ArrayUtils.contains(intArray, valueToFind);
Die Verwendung der Java 8 Stream API kann Ihre Arbeit vereinfachen.
public static boolean inArray(int[] array, int check) {
return Stream.of(array).anyMatch(i -> i == check);
}
Es ist nur der Aufwand, eine neue Stream
aus Array
zu erstellen, aber dies führt dazu, dass andere Stream
-API verwendet werden. In Ihrem Fall möchten Sie möglicherweise keine neue Methode für den einzeiligen Betrieb erstellen, es sei denn, Sie möchten dies als Dienstprogramm verwenden Hoffe, das hilft!