¿Cómo iterar LinkedHashMap en orden inverso en Java?

LinkedHashMap se utiliza para mantener un orden de elementos insertados en él. Proporciona dónde se puede acceder a los elementos en su orden de inserción. Un LinkedHashMap contiene valores basados ​​en la clave. Implementa la interfaz Map y amplía la clase HashMap . Contiene solo elementos únicos o asignaciones.

Sintaxis de Linkedhashmap

public class LinkedHashMap<K,​V> extends HashMap<K,​V> implements Map<K,​V>

Donde K es clave y V es valor.

Podemos dar clave y valor como nuestros propios tipos de datos como string, flotante, entero, etc. Podemos invertir los elementos en el mapa hash vinculado invirtiendo primero los elementos. Después de invertir, podemos iterarlo.

Método 1: (usando el método inverso())

Este método se utiliza para invertir el orden de los elementos o asignaciones en LinkedHashMap.

Sintaxis:

public static void reverse(List myList)

Parámetros: myList es la lista proporcionada al método Collections.reverse(myList) .

Devoluciones: No devuelve nada pero modifica internamente la lista.

Excepción: arroja una excepción de operación no admitida si la lista especificada o su iterador de lista no admite la operación de configuración.

Pasos:

  • Importar paquetes necesarios
  • Crear un LinkedHashMap con claves y valores
  • Invertir el LinkedHashMap
  • Iterarlo.

Ejemplo 1:

Detalles del estudiante que muestran un orden ascendente y descendente con un número entero como clave y valor como una string.

Java

// Java program to iterate 
// LinkedHashMap in reverse order
  
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
  
public class Main {
  
    public static void main(String[] args)
    {
        System.out.println("Student Details:");
        
        // creating HashMap object of type <String, String>
        LinkedHashMap<Integer, String> lhm
            = new LinkedHashMap<Integer, String>();
  
        // adding key-value pairs to HashMap object
        lhm.put(1, "Sravan Kumar");
        lhm.put(2, "Ishitha");
        lhm.put(3, "Harsha");
        lhm.put(4, "Vamsi");
        lhm.put(5, "Jyothika");
  
        // Insertion Order iterating
        System.out.println(
            "Insertion Order of LinkedHashMap:"
            + " iterating \n");
  
        // getting keySet() into Set
        Set<Integer> set = lhm.keySet();
  
        // get Iterator from key set
        Iterator<Integer> itr = set.iterator();
  
        // iterating as per Insertion Order
        while (itr.hasNext()) {
            Integer key = itr.next();
            System.out.println("Key : " + key + "\t\t"
                               + "Value : " + lhm.get(key));
        }
  
        // Reverse of Insertion Order iterating
        System.out.println("\n\nReverse of Insertion Order:"
                           + " iterating \n");
  
        // convert to ArrayList of key set
        List<Integer> alKeys
            = new ArrayList<Integer>(lhm.keySet());
  
        // reverse order of keys
        Collections.reverse(alKeys);
  
        // iterate LHM using reverse order of keys
        for (Integer strKey : alKeys) {
            System.out.println("Key : " + strKey + "\t\t"
                               + "Value : "
                               + lhm.get(strKey));
        }
    }
}
Producción

Student Details:
Insertion Order of LinkedHashMap: iterating 

Key : 1        Value : Sravan Kumar
Key : 2        Value : Ishitha
Key : 3        Value : Harsha
Key : 4        Value : Vamsi
Key : 5        Value : Jyothika


Reverse of Insertion Order: iterating 

Key : 5        Value : Jyothika
Key : 4        Value : Vamsi
Key : 3        Value : Harsha
Key : 2        Value : Ishitha
Key : 1        Value : Sravan Kumar

Ejemplo 2: tanto las claves como los valores son de tipo string.

Java

// Java program to iterate 
// LinkedHashMap in reverse order
  
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
  
public class Main {
  
    public static void main(String[] args)
    {
  
        // creating HashMap object of type <String, String>
        LinkedHashMap<String, String> lhm
            = new LinkedHashMap<String, String>();
  
        System.out.println("Staff DataBase");
  
        // adding key-value pairs to HashMap object
        lhm.put("CSE", "Subba Rao");
        lhm.put("IT", "Maruti");
        lhm.put("Civil", "Sundari Devi");
  
        // Insertion Order iterating
        System.out.println(
            "Insertion Order of LinkedHashMap:"
            + " iterating \n");
  
        // getting keySet() into Set
        Set<String> set = lhm.keySet();
  
        // get Iterator from key set
        Iterator<String> itr = set.iterator();
  
        // iterating as per Insertion Order
        while (itr.hasNext()) {
            String key = itr.next();
            System.out.println("Key : " + key + "\t\t"
                               + "Value : " + lhm.get(key));
        }
  
        // Reverse of Insertion Order iterating
        System.out.println("\n\nReverse of Insertion Order:"
                           + " iterating \n");
  
        // convert to ArrayList of key set
        List<String> alKeys
            = new ArrayList<String>(lhm.keySet());
  
        // reverse order of keys
        Collections.reverse(alKeys);
  
        // iterate LHM using reverse order of keys
        for (String strKey : alKeys) {
            System.out.println("Key : " + strKey + "\t\t"
                               + "Value : "
                               + lhm.get(strKey));
        }
    }
}
Producción

Staff DataBase
Insertion Order of LinkedHashMap: iterating 

Key : CSE        Value : Subba Rao
Key : IT        Value : Maruti
Key : Civil        Value : Sundari Devi


Reverse of Insertion Order: iterating 

Key : Civil        Value : Sundari Devi
Key : IT        Value : Maruti
Key : CSE        Value : Subba Rao

Método 2: (usando el método listIterator )

Sintaxis:

ListIterator listIterator(int index)

Parámetros: este método solo tiene un argumento, es decir, índice: índice del primer elemento que se devolverá desde el iterador de lista (mediante una llamada a siguiente).

Devoluciones: este método devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada), comenzando en la posición especificada en la lista.

Java

// Java program to iterate 
// LinkedHashMap in reverse order
  
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
  
public class LinkedHashMapIterateReverseExample {
  
    public static void main(String[] args)
    {
  
        // create an instance of linked hashmap
        LinkedHashMap<String, String> lhmap
            = new LinkedHashMap<String, String>();
  
        // Add mappings
        lhmap.put("one", "Geeks");
        lhmap.put("two", "For");
        lhmap.put("three", "Geeks");
  
        // get all keys from the LinkedHashMap
        Set<String> setKeys = lhmap.keySet();
  
        // convert set to list
        List<String> listKeys
            = new ArrayList<String>(setKeys);
  
        // get a ListIterator for the ArrayList and
        // position it at the end to iterate backwards
        ListIterator<String> iterator
            = listKeys.listIterator(listKeys.size());
  
        // Iterate in reverse order using the hasPrevious
        // and previous methods
        while (iterator.hasPrevious()) {
  
            String key = iterator.previous();
  
            // get value mapped to the key
            System.out.println(key + " " + lhmap.get(key));
        }
    }
}
Producción

three Geeks
two For
one Geeks

Método 3: (usando el método descendingIterator )

Sintaxis:

public Iterator descendingIterator()

Valor devuelto: este método devuelve un iterador sobre los elementos de esta LinkedList en secuencia inversa.

Java

// Java program to iterate 
// LinkedHashMap in reverse order
  
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Set;
  
public class LinkedHashMapIterateReverseExample {
  
    public static void main(String[] args)
    {
  
        // create an instance of linked hashmap
        LinkedHashMap<String, String> lhmap
            = new LinkedHashMap<String, String>();
  
        // Add mappings
        lhmap.put("one", "Geeks");
        lhmap.put("two", "For");
        lhmap.put("three", "Geeks");
  
        // get all keys from the LinkedHashMap
        Set<String> setKeys = lhmap.keySet();
  
        // convert set to LinkedList
        LinkedList<String> listKeys
            = new LinkedList<String>(setKeys);
  
        // get descending iterator
        Iterator<String> iterator
            = listKeys.descendingIterator();
  
        // iterate the keys and get the values from the
        // map
        while (iterator.hasNext()) {
  
            String key = iterator.next();
  
            // get the value
            System.out.println(key + " " + lhmap.get(key));
        }
    }
}
Producción

three Geeks
two For
one Geeks

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *