# in_array() in Java?



## Tropical (21. Januar 2006)

Ich bin noch ein ziemlicher Anfänger in Java und gerade erst bei den Arrays angelangt. Jetzt suche ich vergebens eine Methode die äquivalent zur PHP-Funktion in_array() ist.
Wie heißt diese Methode und welches Paket muss ich dafür importieren?

Vielen Dank.


----------



## flashray (22. Januar 2006)

Hallo,

dazu gibt es kein Äquialent in Java. Du müsstest mit einer Schleife alle Elemente des Feldes einzeln überprüfen um zu sehen ob das gesuchte Element enthalten ist. Oder über Umwege, das Array in ein anderes Format kopieren welche eine solche Methode besitzt.

Schau mal hier:
3.8.16 Die Klasse Arrays zum Vergleichen, Füllen und Suchen

Soweit ich die Möglichkeit aus dem Link kurz überprüfen konnte funktioniert das mit primitiven Datentypen nicht. Für ein Stringarray, Ja.
Arrays.asList( array ).contains(gesuchte Element)

Vg Erdal


----------



## Tropical (22. Januar 2006)

Logisch das ich das wieder mit Integers brauche.. 
Naja, geholfen hat's trotzdem ein bisschen.
Habe das jetzt mal so versucht:

```
int[] exceptions = {11,12,16,17,21,31,41,51,61,71,81,91};
    int anzahl = exceptions.length;
    int input = 32 // Benutzereingabe
    boolean isAnException = false;
    for (int i = 0; i < anzahl+1; i++) {
      if (input == exceptions[i]){
        isAnException = true;
      }
    }
    if (isAnException == true) {
      //Ausnahmefall
    } else {
      //Regelfall
    }
```
Nun meldet der allerdings beim Vergleichen einen Fehler
*Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException*
Was sollte mir das sagen?


----------



## RedWing (22. Januar 2006)

```
for (int i = 0; i < anzahl+1; i++) {
```

Muss heißen

```
for (int i = 0; i < anzahl; i++) {
```

Gruß

RedWing


----------



## Thomas Darimont (22. Januar 2006)

Hallo!

  Schau mal hier:

```
/**
   * 
   */
  package de.tutorials;
  
  import java.util.Arrays;
  import java.util.List;
  
  /**
   * @author Tom
   * 
   */
  public class FindElementInArrayExample {
  
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) {
  		
  		//...einie eigene (naive) Suchmethode
  		int[] nums = {47,564,113,4487,65468,54546};
  		int elementIdx = findElement(nums,4487);
  		System.out.println(nums[elementIdx]);
  		
 		//Wenn deine Elemente geördnet sind kannst du die Binary Search Methode verwenden.
  		String[] strings = {"a","b","c","d"};
  		int idx = Arrays.binarySearch(strings,"c");
  		System.out.println(strings[idx]);
  		
  		//Sind deine Elemente nicht geordnet kannst du die indexOf Methode des
  		//List-Interfaces verwenden.
  		Integer[] numbers = {4,3,2,5,1,6,0,7,9,8,Integer.MAX_VALUE,10};
  		int numberIdx = Arrays.asList(numbers).indexOf(Integer.MAX_VALUE);
  		System.out.println(numbers[numberIdx]);
  
  		//Vorsicht bei der Verwendung von primitiven Arrays
  		int[] ints = {1,2,3,4};
  		List intList = Arrays.asList(ints); 
  		//-> das Ergebnis ist hier NICHT ein Array mit den Elementen 1,2,3,4
   		// (hier wird kein Auto Boxing durchgeführt)
  		//Sondern ein geschachteltes Array ->[[1,2,3,4]]
  		System.out.println(intList.size()); // --> 1
  		System.out.println(((int[])intList.get(0))[2]); //--> 3
  	}
  
  	/**
  	 * @param nums
  	 */
  	private static int findElement(int[] nums, int element) {
  		for (int i = 0; i < nums.length; i++) {
  			if(nums[i] == element){
  				return i;
  			}
  		}
  		return -1;
  	}
  }
```
 
  Gruß Tom


----------

