Programa Java para Rotar Elementos de la Lista

La lista es una colección ordenada de objetos en los que se pueden almacenar valores duplicados. Dado que List conserva el orden de inserción, permite el acceso posicional y la inserción de elementos. En este artículo vamos a ver cómo rotar elementos de una lista. Consideremos la siguiente lista.

lista inicial

LISTA ORIGINAL ANTES DE LA ROTACIÓN

Hay dos tipos de rotaciones en una lista. Son la rotación a la derecha y la rotación a la izquierda. Después de cuatro rotaciones a la derecha, la lista se vuelve como se muestra a continuación:

Después de cuatro rotaciones a la derecha

LISTA DESPUÉS DE ROTAR CUATRO POSICIONES

Método 1: (sin utilizar métodos integrados)

Trabajando para la rotación derecha

  • Primero almacene el último elemento de la lista en una variable temporal.
  • Mueva los elementos en una posición hacia la derecha.
  • Ahora cambie el valor del primer elemento de la lista con valor en una variable temporal.
  • Actualice el valor de una variable temporal al nuevo último elemento.
  • Repita los pasos anteriores que requieren un número de rotaciones.

Ejemplo:

Java

// Java Program to Rotate Elements of the List
import java.io.*;
import java.util.*;
class GFG {
    
    public static void main(String[] args)
    {
        // creating ArrayList
        List<Integer> my_list = new ArrayList<>();
        my_list.add(10);
        my_list.add(20);
        my_list.add(30);
        my_list.add(40);
        my_list.add(50);
        my_list.add(60);
        my_list.add(70);
  
        // Printing list before rotation
        System.out.println(
            "List Before Rotation : "
            + Arrays.toString(my_list.toArray()));
  
        // Loop according to the number of rotations
        for (int i = 0; i < 4; i++) {
            
            // storing the last element in the list
            int temp = my_list.get(6);
            
            // traverse the list and move elements to right
            for (int j = 6; j > 0; j--) {
                my_list.set(j, my_list.get(j - 1));
            }
            my_list.set(0, temp);
        }
  
        // Printing list after rotation
        System.out.println(
            "List After Rotation :  "
            + Arrays.toString(my_list.toArray()));
    }
}
Producción

List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation :  [40, 50, 60, 70, 10, 20, 30]

Después de cuatro rotaciones a la izquierda, la lista se vuelve como se muestra a continuación:

Después de cuatro rotaciones a la izquierda

LISTA DESPUÉS DE ROTAR CUATRO POSICIONES

Trabajando para rotación a la izquierda

  • Primero almacene el primer elemento de la lista en una variable temporal.
  • Mueva los elementos en una posición hacia la izquierda.
  • Ahora cambie el valor del último elemento de la lista con el valor en la variable temporal.
  • Actualice el valor de una variable temporal al nuevo primer elemento.
  • Repita los pasos anteriores que requieren un número de rotaciones.

Ejemplo

Java

// Java Program to Rotate Elements of the List
  
import java.io.*;
import java.util.*;
class GFG {
    public static void main(String[] args)
    {
        // creating array list
        List<Integer> my_list = new ArrayList<>();
        my_list.add(10);
        my_list.add(20);
        my_list.add(30);
        my_list.add(40);
        my_list.add(50);
        my_list.add(60);
        my_list.add(70);
  
        // Printing list before rotation
        System.out.println(
            "List Before Rotation : "
            + Arrays.toString(my_list.toArray()));
  
        // Loop according to the number of rotations
        for (int i = 0; i < 4; i++) {
            // storing the first element in the list
            int temp = my_list.get(0);
            // traverse the list and move elements to left
            for (int j = 0; j < 6; j++) {
                my_list.set(j, my_list.get(j + 1));
            }
            my_list.set(6, temp);
        }
  
        // Printing list after rotation
        System.out.println(
            "List After Rotation :  "
            + Arrays.toString(my_list.toArray()));
    }
}
Producción

List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation :  [50, 60, 70, 10, 20, 30, 40]

Método 2: (Rotación usando el método Collections.rotate(list, distance) )

Tanto las rotaciones a la izquierda como a la derecha se pueden realizar directamente utilizando las colecciones de Java.

Sintaxis

Collections.rotate(list_name, distancia)

Parámetros: 

  • list_name: nombre de la lista.
  • distancia: La distancia es el número de elementos que tenemos que rotar.

Devoluciones: Devuelve una lista rotada.

Nota: La distancia negativa da rotación a la izquierda mientras que la positiva da rotación a la derecha.

Ejemplo: uso de la distancia positiva para obtener la rotación correcta.

Java

// Java Program to Rotate Elements of the List
  
import java.io.*;
import java.util.*;
class GFG {
    public static void main(String[] args)
    {
        // creating array list
        List<Integer> my_list = new ArrayList<>();
        my_list.add(10);
        my_list.add(20);
        my_list.add(30);
        my_list.add(40);
        my_list.add(50);
        my_list.add(60);
        my_list.add(70);
  
        // Printing list before rotation
        System.out.println(
            "List Before Rotation : "
            + Arrays.toString(my_list.toArray()));
  
        // Rotating the list at distance 4
  
        Collections.rotate(my_list, 4);
  
        // Printing list after rotation
        System.out.println(
            "List After Rotation :  "
            + Arrays.toString(my_list.toArray()));
    }
}
Producción

List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation :  [40, 50, 60, 70, 10, 20, 30]

Ejemplo: usar la distancia negativa para obtener la rotación a la izquierda.

Java

// Java Program to Rotate Elements of the List
  
import java.io.*;
import java.util.*;
class GFG {
    public static void main(String[] args)
    {
        // creating array list
        List<Integer> my_list = new ArrayList<>();
        my_list.add(10);
        my_list.add(20);
        my_list.add(30);
        my_list.add(40);
        my_list.add(50);
        my_list.add(60);
        my_list.add(70);
  
        // Printing list before rotation
        System.out.println(
            "List Before Rotation : "
            + Arrays.toString(my_list.toArray()));
  
        // Rotating the list at distance -3
        Collections.rotate(my_list, -4);
  
        // Printing list after rotation
        System.out.println(
            "List After Rotation :  "
            + Arrays.toString(my_list.toArray()));
    }
}
Producción

List Before Rotation : [10, 20, 30, 40, 50, 60, 70]
List After Rotation :  [50, 60, 70, 10, 20, 30, 40]

Publicación traducida automáticamente

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