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 {

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;
}
}
Output

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).

import java.util.Arrays; 

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);
}
}
Output

true
Why 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; 

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));
}
}
Output

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; 

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'));
}
}
Output:

Der gesuchte Wert befindet sich in der Position 3