Suche sowas ala if(Interger IN MENGE)

jeipack

Erfahrenes Mitglied
Hi
Ich muss in einer If Abfrage einen Integerwert mit mehreren anderen vergleichen.
Java:
if(var==1 || var ==3 || var==5)
Der Übersichtlichkeit hätte ich gerne sowas wie
Java:
if(var IN {1, 3, 5})
//oder
if({1, 3, 5}.contains(var))
Ich will aber kein Set verwenden, weil ich die nicht in der if Abfrage initialisieren kann und ich die Zahlen gerne in der If Abfrage drin habe (Wie gesagt, es geht nicht ums Technische, sondern nur darum es später einfach lesen zu können).

hat wer eine Idee?
 
Hi,

wäre mir nicht bekannt.

Jedoch könntest du ja alle INTs in Strings umwandeln und dann in_array nutzen.

Oder du schreibst eine weitere Funtkion:

PHP:
public boolean is_in_int_array($intarray, int zahl){
for(int a=0; a<intarray.lengh;a++){
if(zahl = intarray[a]) return true;
}

}

bo
 
Moin,

das was Du suchst (... IN ...) gibt es so in Java nicht (klingt sehr nach SQL :p).

Du kannst Dir natürlich ggf. eine kleine Funktion mit relativ analoger Syntax schreiben ....
Oder Du nutzt die allseits beliebte SWITCH-Anweisung:
Java:
switch( var )
{
    case 1:
    case 2:
    case 3:
        TueWas();
        break;
    case 4: 
        TueWasAnderes();
        break;
    default:
        TueNix();
}

Gruß
Klaus
 
Hi.

Wie wär's damit:
Java:
class MyUtils {
	public static Set<Integer> values(Integer ... numbers) {
		return new TreeSet<Integer>(Arrays.asList(numbers));
	}
}

...

import static MyUtils.values;

if (values(1, 2, 3, 4, 6).contains(5))  {
}
Gruß
 
Hallo,

... kann man alles machen (mit mehr oder weniger Aufwand):
Java:
package de.tutorials;

import java.util.Arrays;

public class InListExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int v = 47;
		if (value(v).in(1, 2, 3, 4, 5)) {
			System.out.println("in");
		}
	}

	private static Value value(Object v) {
		return new Value(v);
	}

	static class Value {
		Object v;

		public Value(Object v) {
			this.v = v;
		}

		public <T> boolean in(T... values) {
			return Arrays.asList(values).contains(v);
		}
	}
}

Gruß Tom
 
Vielen Dank für eure Ideen. Bin irgendwie nicht auf die Idee gekommen mir selbst so ein Konstrukt zu basteln *shame"


Grüsse
und vfl_freak ja die Idee kommt ganz klar von SQL;)
 
Hi.

Wie wär's damit:
Java:
class MyUtils {
	public static Set<Integer> values(Integer ... numbers) {
		return new TreeSet<Integer>(Arrays.asList(numbers));
	}
}

...

import static MyUtils.values;

if (values(1, 2, 3, 4, 6).contains(5))  {
}
Gruß

Gute Idee. Am besten noch generisch machen, damit man die Funktion auch mit Strings etc vewenden kann.
Java:
    public static <T> Set<T> values(T ... values) {
        return new TreeSet<T>(Arrays.asList(values));
    }
 

Neue Beiträge

Zurück