¿Cómo usar el valor int de Map en el caso de switch?

Tengo un mapa:

Map<String, Integer> myMap = new HashMap<String, Integer>();

Ahora he agregado algunos valores:

myMap.put("east", generateId());
myMap.put("west", generateId());
myMap.put("north", generateId());
myMap.put("south", generateId());

Ahora estoy tratando de verificar las coincidencias usando la caja del interruptor:

int i = myMap.get("east");
int j = myMap.get("west");
int k = myMap.get("north");
int l = myMap.get("south");
switch (myId) {
    case i:
        break;
    case j:
        break;
    case k:
        break;
    case l:
        break;
}

Dice la expresión constante requerida en todos los casos (i, j, k, l). ¿Cómo resuelvo esto?

Respuesta 1

Como solo puede usar valores en mayúsculas y minúsculas, no variables, debe cambiar su código:

Set<Integer> set = new HashSet<Integer>(myMap.size());
set.add(new Integer(myMap.get("east")));
set.add(new Integer(myMap.get("west")));
set.add(new Integer(myMap.get("north")));
set.add(new Integer(myMap.get("south")));

if (set.contains(new Integer(myId))) break;

Puede usarlo Setpara ayudarlo con la comprobación (funciona O(1)y hay menos código). Además, el interruptor no es OOP, así que no lo use ...

Respuesta: 2

Cito del Capítulo 3 de Herbert Schildt Tipos de datos, variables y matrices: los tipos primitivos representan valores únicos, no objetos complejos. Aunque Java está completamente orientado a objetos, ...

He estado usando una clase: public class Change {ObjectfectedObj; // toma una instancia de cualquier clase StringfectedFieldName; cambio de flotador; ... el vacío público se aplica () {...

Estoy tratando de agregar una cuenta de proveedor de sincronización y todo iba bien hasta que hago clic en la cuenta dentro de la configuración de la cuenta. Recibo el siguiente error a continuación en LogCat. Como puedes ver es ...

Tengo este código y me gustaría que sea una aplicación multilingüe. Lo que quiero es usar las cadenas del archivo Strings.xml en el directorio de valores. Digamos que tengo una tostada ... Toast.makeText (...