Prüfen, ob ein Element in einem Array in Java vorhanden ist
Wir wollen überprüfen, ob ein Wert in einem Array vorhanden ist, und wenn möglich seine Position abrufen. Sie können eine von drei Methoden wählen:- Durchsuchen Sie das Array und vergleichen Sie alle Felder mit dem Eingabewert und beiden.
- Die Methode contains()
- Die Methode BinarySearch()
1) Suchen Sie nach einem Element, indem Sie die array
In diesem Beispiel erstellen wir eine Funktion exists() der die Position des gesuchten Werts zurückgibt, wenn das Array existiert, andernfalls gibt er -1 zurück und zeigt eine Meldung an, die darauf hinweist, dass das Array diesen Wert nicht hat.
public class Test {Output
public static void main(String[] args) {
int T[]={1, 5, 2, 22, 14, 3, 18, 52, 40, 88, 73, 27};
int valrech=22;
int position = exists(T, valrech);
if(position!=-1)
System.out.println(valrech+" befindet sich in der Position "+position");
}
static int exists(int T[], int val){
for(int i = 0 ; i< T.Länge; i++){
if(val==T[i])
//return current position
return i;
}
System.out.println("Der gesuchte Wert existiert nicht");
return -1;
}
}
22 befindet sich in der 3
Der Vergleich von Strings erfolgt mit der Methode equals() und nicht mit "==". Lesen Sie den ArtikelSo vergleichen Sie zwei Strings in java.
2) Überprüfen Sie, ob das Element im array vorhanden ist
Diese Methode testet nur die Existenz des Elements. In diesem Beispiel kann der folgende Code sowohl den Zeichenfolgen- als auch den int-Typ vergleichen. Um die contains müssen Sie das gesamte Array mit toString(T).
Wir können die Lösung vorschlagen, int in ein Integer-Objekt mit der Methode Integer.valueOf(T[i]), ansonsten wird das Integer-Objekt von Anfang an verwendet. Dieser Code zeigt den Unterschied zwischen den beiden:
import java.util.Arrays;Output
public class Test {
public static void main(String[] args) {
int T[]={100,150,180,220,240};
System.out.println(contains(T, "220"));
}
static public boolean contains(int[] T, String val) {
return Arrays.toString(T).contains(val);
}
}
trueWhy contains() unterstützt den String-Typ, aber nicht den int-Typ? Ganz einfach, weil int ein primitiver Typ ist und String nach der Instanziierung zu einem Objekt wird und in contains(Object o) das nur nach Objekten sucht.
Wir können die Lösung vorschlagen, int in ein Integer-Objekt mit der Methode Integer.valueOf(T[i]), ansonsten wird das Integer-Objekt von Anfang an verwendet. Dieser Code zeigt den Unterschied zwischen den beiden:
import java.util.Arrays;Output
public class Test {
public static void main(String[] args) {
int T[]={10,14,28,201,280};
Ganzzahl[] T2 = {10,14,28,201,280};
//array int
System.out.println(Arrays.asList(T).contains(28));
//array Integer
System.out.println(Arrays.asList(T2).contains(28));
}
}
false
true
3) Finden Sie einen Wert mit der BinarySearch-Methode
Diese Methode ist generisch, da sie alle Typen akzeptiert: integer, float, char, double, boolean, short,etc.
import java.util.Arrays;Output:
public class Test {
public static void main(String[] args) {
int T[]={'a','b','c','d','e','f'};
System.out.println("Der gesuchte Wert befindet sich in
der Position "+Arrays.binarySearch(T,'d'));
}
}
Der gesuchte Wert befindet sich in der Position 3