Quiero ir a través de todos los elementos de un diccionario en java. para aclarar lo que quiero hacer, este es el código de C#

Dictionary<string, Label> LableList = new Dictionary<string, Label>();
foreach (KeyValuePair<string, Label> z in LabelList);

No sé cómo hacerlo, es java, por ejemplo yo hice este

for(Object z: dic)

pero dice que no es iterable. Por favor avise……

OriginalEl autor Daniel | 2012-02-21

4 Comentarios

  1. 33

    Estoy asumiendo que usted tiene un Map<String, Label> que es el Java integrado en la estructura de los diccionarios. Java no permite iterar directamente a través de una Map (es decir, no aplicar Iterable) porque sería ambigua de lo que en realidad estamos iterando.

    Es sólo una cuestión de elección para iterar a través de las teclas, o valores de las entradas (ambos).

    por ejemplo,

    Map<String, Label> map = new HashMap<String, Label>();
    //...
    
    for ( String key : map.keySet() ) {
    }
    
    for ( Label value : map.values() ) {
    }
    
    for ( Map.Entry<String, Label> entry : map.entrySet() ) {
        String key = entry.getKey();
        Label value = entry.getValue();
    }

    Su código de C# parece ser la misma como la iteración a través de las entradas (el último ejemplo).

    Así es como yo lo defino como: Diccionario <Cadena, Label> dic = null; yo no sé nada acerca de Mapa… Es algún tipo de diccionario?
    La lectura de la javadoc diría NOTE: This class is obsolete. New implementations should implement the Map interface, rather than extending this class., por lo que se debe utilizar uno de los nuevos mapas de clases. Usted probablemente querrá una HashMap – que también implementa las nuevas funciones que usted necesita para iterable a trabajar
    Increíble, me había olvidado hace tiempo que Hashtable tenía un Diccionario de la superclase.
    Sí, yo tenía que mirar para arriba también, mi primer instinto fue “Esperar Java no tiene un Diccionario ¿qué diablos estás haciendo?”. Diccionario fue sustituido en 1.2 (sólo para mostrar cómo la antigua que es: 1.2 fue la primera versión de la JVM de Sun incluye un JIT)

    OriginalEl autor Mark Peters

  2. 4

    java.util.Map es el Diccionario equvivalent y a continuación es un ejemplo de cómo se puede iterar a través de cada entrada

    for(Map.Entry<K, V> e : map.entrySet())
    {
        System.out.println(e.getKey()+": "+e.getValue());
    }

    OriginalEl autor Aravind R. Yarram

  3. 0

    Su mejor apuesta es usar este:

    for (String key : LableList.keys()) {
        Label value = LableList.get(key);
    
        //do what you wish with key and value here
    }

    En Java, sin embargo, una mejor opción es no utilizar el Diccionario como lo haría en .La RED, pero el uso de uno de los Mapas de las subclases, por ejemplo, HashMap. Usted puede iterar a través de uno de estos como este:

    for (Entry<String, Label> e : myMap.entrySet()) {
        //Do what you wish with e.getKey() and e.getValue()
    }

    También se le advierte contra el uso del Diccionario en el boletín oficial de javadoc.

    De diccionario.keys() devuelve una Enumeración que no implementa Iterable y por lo tanto no puede ser utilizado en el bucle foreach. No se compilará el código.
    Decir que a mi código de trabajo 🙂
    Así que mi Eclipse compilador está roto (que muestra y error), o no estamos hablando de la misma cosa. (No se que Diccionario de materias de cualquier manera)
    ¿cuál es tu versión de Java?
    Java 1.6.0_45, con la configuración predeterminada del nivel de cumplimiento. Tal vez usted quiere decir .keySet() en lugar de .las teclas()? .conjunto de claves sólo se implementa cuando la colección también implementa Mapa (en el Diccionario que no, pero por ejemplo. Propiedades).

    OriginalEl autor Fritz H

  4. 0

    Yo estaba tratando de agregar el contenido de un HashMap () en otro HashMap (b).

    Me resultó sencillo para iterar a través de un HashMap de esta manera:

    a.forEach((k, v) -> b.put(k, v));

    Puede manipular mi ejemplo para hacer lo que quiera en el otro lado de “->”.

    Tenga en cuenta que esta es una expresión Lambda, y que se tendría que usar Java 1.8 (Java 8) o posterior para este trabajo. 🙂

    OriginalEl autor Peter Clausen

Dejar respuesta

Please enter your comment!
Please enter your name here