Invertir una ArrayList en Java

Suponiendo que haya revisado arraylist en Java y conozca arraylist. Esta publicación contiene diferentes ejemplos para revertir una lista de arreglos que se dan a continuación:
1. Escribiendo nuestra propia función ( usando espacio adicional ): el método reverseArrayList() en la clase RevArrayList contiene lógica para revertir una lista de arreglos con objetos enteros. Este método toma una lista de arreglos como parámetro, la atraviesa en orden inverso y agrega todos los elementos a la lista de arreglos recién creada. Finalmente, se devuelve la lista de arrays invertida.
 

Java

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class RevArrayList {
 
    // Takes an arraylist as a parameter and returns
    // a reversed arraylist
    public ArrayList<Integer> reverseArrayList(ArrayList<Integer> alist)
    {
        // Arraylist for storing reversed elements
        ArrayList<Integer> revArrayList = new ArrayList<Integer>();
        for (int i = alist.size() - 1; i >= 0; i--) {
 
            // Append the elements in reverse order
            revArrayList.add(alist.get(i));
        }
 
        // Return the reversed arraylist
        return revArrayList;
    }
 
    // Iterate through all the elements and print
    public void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}
 
public class GFG {
    public static void main(String[] args)
    {
        RevArrayList obj = new RevArrayList();
 
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(1));
        arrayli.add(new Integer(2));
        arrayli.add(new Integer(3));
        arrayli.add(new Integer(4));
        System.out.print("Elements before reversing:");
        obj.printElements(arrayli);
        arrayli = obj.reverseArrayList(arrayli);
        System.out.print("\nElements after reversing:");
        obj.printElements(arrayli);
    }
}
Producción: 

Elements before reversing:1 2 3 4 
Elements after reversing:4 3 2 1

 

1. Al escribir nuestra propia función ( sin usar espacio adicional ): en el ejemplo anterior, se usa adicionalmente una lista de arreglos para almacenar todos los elementos invertidos, lo que ocupa más espacio. Para evitar eso, se puede usar la misma lista de arreglos para invertir. 
Lógica: 
1. Ejecute el ciclo n/2 veces donde ‘n’ es el número de elementos en la lista de arreglos. 
2. En el primer pase, intercambie el primer y el n-ésimo elemento 
3. En el segundo pase, intercambie el segundo y el (n-1)-ésimo elemento y así sucesivamente hasta llegar a la mitad de la lista de arreglos. 
4. Devuelva la lista de arreglos después de la terminación del ciclo.
 

Java

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class RevArrayList {
 
    // Takes an arraylist as a parameter and returns
    // a reversed arraylist
    public ArrayList<Integer> reverseArrayList(ArrayList<Integer> alist)
    {
        // Arraylist for storing reversed elements
        // this.revArrayList = alist;
        for (int i = 0; i < alist.size() / 2; i++) {
            Integer temp = alist.get(i);
            alist.set(i, alist.get(alist.size() - i - 1));
            alist.set(alist.size() - i - 1, temp);
        }
 
        // Return the reversed arraylist
        return alist;
    }
 
    // Iterate through all the elements and print
    public void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}
 
public class GFG1 {
    public static void main(String[] args)
    {
        RevArrayList obj = new RevArrayList();
 
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(12));
        arrayli.add(new Integer(13));
        arrayli.add(new Integer(123));
        arrayli.add(new Integer(54));
        arrayli.add(new Integer(1));
        System.out.print("Elements before reversing: ");
        obj.printElements(arrayli);
        arrayli = obj.reverseArrayList(arrayli);
        System.out.print("\nElements after reversing: ");
        obj.printElements(arrayli);
    }
}
Producción: 

Elements before reversing: 12 13 123 54 1 
Elements after reversing: 1 54 123 13 12

 

2. Mediante el uso de la clase Collections: Collections es una clase en el paquete java.util que contiene varios métodos estáticos para buscar, clasificar, invertir, encontrar máximos, mínimos, etc. Podemos hacer uso del método Collections.reverse() incorporado para invertir una lista de arrays. Toma una lista como parámetro de entrada y devuelve la lista invertida.
 

Java

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
 
public class GFG2 {
    public static void main(String[] args)
    {
        // Declaring arraylist without any initial size
        ArrayList<Integer> arrayli = new ArrayList<Integer>();
 
        // Appending elements at the end of the list
        arrayli.add(new Integer(9));
        arrayli.add(new Integer(145));
        arrayli.add(new Integer(878));
        arrayli.add(new Integer(343));
        arrayli.add(new Integer(5));
        System.out.print("Elements before reversing: ");
        printElements(arrayli);
 
        // Collections.reverse method takes a list as a
        // parameter and reverses the passed parameter
      //(no new array list is required)
        Collections.reverse(arrayli);
        System.out.print("\nElements after reversing: ");
        printElements(arrayli);
    }
 
    // Iterate through all the elements and print
    public static void printElements(ArrayList<Integer> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print(alist.get(i) + " ");
        }
    }
}
Producción: 

Elements before reversing: 9 145 878 343 5 
Elements after reversing: 5 343 878 145 9

 

3. Invertir una lista de array de objetos definidos por el usuario: se crea una clase de empleado para crear objetos definidos por el usuario con ID de empleado, nombre de empleado, nombre de departamento como variables de clase que se inicializan en el constructor. Se crea una lista de arrays que solo toma objetos de empleado (definidos por el usuario). Estos objetos se agregan a la lista de arreglos usando el método add(). La lista de arreglos se invierte usando el método inverso() incorporado de la clase Collections. 
El método estático printElements() se usa solo para evitar escribir una clase más en el programa.
 

Java

// Java program for reversing an arraylist
import java.io.*;
import java.util.*;
class Employee {
    int empID;
    String empName;
    String deptName;
 
    // Constructor for initializing the class variables
    public Employee(int empID, String empName, String deptName)
    {
        this.empID = empID;
        this.empName = empName;
        this.deptName = deptName;
    }
}
 
public class GFG3 {
    public static void main(String[] args)
    {
        // Declaring arraylist without any initial size
        ArrayList<Employee> arrayli = new ArrayList<Employee>();
 
        // Creating user defined objects
        Employee emp1 = new Employee(123, "Rama", "Facilities");
        Employee emp2 = new Employee(124, "Lakshman", "Transport");
        Employee emp3 = new Employee(125, "Ravan", "Packing");
 
        // Appending all the objects for arraylist
        arrayli.add(emp1);
        arrayli.add(emp2);
        arrayli.add(emp3);
 
        System.out.print("Elements before reversing: ");
        printElements(arrayli);
 
        // Collections.reverse method takes a list as a
        // parameter and reverse the list
        Collections.reverse(arrayli);
        System.out.print("\nElements after reversing: ");
        printElements(arrayli);
    }
 
    // Iterate through all the elements and print
    public static void printElements(ArrayList<Employee> alist)
    {
        for (int i = 0; i < alist.size(); i++) {
            System.out.print("\n EmpID:" + alist.get(i).empID + 
            ", EmpName:" + alist.get(i).empName + ", Department:" +
                                          alist.get(i).deptName);
        }
    }
}
Producción: 

Elements before reversing: 
 EmpID:123, EmpName:Rama, Department:Facilities
 EmpID:124, EmpName:Lakshman, Department:Transport
 EmpID:125, EmpName:Ravan, Department:Packing
Elements after reversing: 
 EmpID:125, EmpName:Ravan, Department:Packing
 EmpID:124, EmpName:Lakshman, Department:Transport
 EmpID:123, EmpName:Rama, Department:Facilities

 

Publicación traducida automáticamente

Artículo escrito por SujanM 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 *