in_array() in Java?

Tropical

Mitglied
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. ;)
 
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
 
Logisch das ich das wieder mit Integers brauche.. :(
Naja, geholfen hat's trotzdem ein bisschen.
Habe das jetzt mal so versucht:
Code:
    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?
 
Code:
for (int i = 0; i < anzahl+1; i++) {

Muss heißen
Code:
for (int i = 0; i < anzahl; i++) {

Gruß

RedWing
 
Hallo!

Schau mal hier:
Code:
  /**
   * 
   */
  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
 
Zurück