Programa Java para combinar dos listas tomando elementos alternativamente

Una lista es una secuencia ordenada de elementos almacenados juntos para formar una colección. Una lista puede contener entradas duplicadas y nulas. Una lista nos permite realizar operaciones basadas en índices, es decir, adiciones, eliminaciones, manipulaciones y acceso posicional. Java proporciona una interfaz incorporada <<java.util>> para realizar listas y otras funciones basadas en clases. 

Casos: pueden ocurrir dos escenarios diferentes al hacerlo según la longitud de las listas

  1. Si la lista 2 se agota al agregar elementos alternativamente, los elementos restantes de la lista 1 son la segunda lista son los elementos restantes de la lista 1 que se agregarán en la misma secuencia de ocurrencia.
  2. Si la lista 1 se agota y así sucesivamente como se discutió en el caso anterior, viceversa

Entonces, el objetivo es eliminar completamente los elementos de la segunda y agregarlos a la primera lista y lo que quede será la segunda lista.

Enfoque: El siguiente enfoque se adopta para almacenar elementos alternativamente en una lista fusionada. 

  • Dos listas se declaran e inicializan con un conjunto de elementos.
  • Se mantienen dos contadores, iyj, para iterar a lo largo de las listas. El bucle se ejecuta hasta la longitud más corta de ambas listas.
  • Se mantiene una lista vacía para almacenar los contenidos combinados de ambas listas, en orden de lista1 seguida de lista2.
  • Al final del bucle, se agota uno de la lista, es decir, el más corto. Luego se usa un ciclo para iterar sobre los elementos restantes de la lista más larga y almacenarlos al final uno por uno.
  • El tipo de datos de la lista combinada debe ser similar a las listas individuales.

Implementación: A continuación se analizan dos ejemplos considerando tanto la lista de enteros como las listas de strings.

Ejemplo 1: listas de strings

Java

// Java Program to Combine Two List
// by Alternatingly Taking Elements
 
// importing required packages
import java.io.*;
import java.util.*;
import java.util.Iterator;
 
// Class to access alterate elements
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating(declaring) list1
        List<String> list1 = new ArrayList<String>();
        // Adding elements to list1
        // Custom inputs
        list1.add("Geeks");
        list1.add("Geeks");
        list1.add("portal");
 
        // Creating(declaring) list2
        List<String> list2 = new ArrayList<String>();
 
        // Adding elements to list2
        // Custom inputs
        list2.add("for");
        list2.add("is CSE");
        list2.add("portal");
 
        // Display message
        System.out.print("List1 contents: ");
 
        // Iterating over List1
        Iterator iterator = list1.iterator();
 
        // Condition check using hasNext() which holds true
        // till there is single element remaining in the
        // List
        while (iterator.hasNext()) {
 
            // Printing elements of List 1
            System.out.print(iterator.next() + " ");
        }
 
        // Next Line
        System.out.println();
 
        // Display message
        System.out.print("List2 contents: ");
 
        // Iterating over List 2
        iterator = list2.iterator();
 
        // Condition check using hasNext() which holds true
        // till there is single element remaining in the
        // List
        while (iterator.hasNext()) {
 
            // Printing elements of List 2
            System.out.print(iterator.next() + " ");
        }
 
        // Declaring counters
        int i = 0;
        int j = 0;
 
        // Creating(declaring) merged List
        List<String> merged_list = new ArrayList<String>();
 
        // Iterating over both the lists until
        // the elements of shorter List are exhausted
        while (i < list1.size() && j < list2.size()) {
 
            // Step 1: Adding List1 element
            merged_list.add(list1.get(i));
 
            // Step 2: Adding List2 element
            merged_list.add(list2.get(j));
 
            // Incrementing counters
            i++;
            j++;
        }
 
        // Iterating over the remaining part of List1
        while (i < list1.size()) {
            merged_list.add(list1.get(i));
 
            // Incrementing List1 counter
            i++;
        }
 
        // Iterating over the remaining part of List2
        while (j < list2.size()) {
            merged_list.add(list2.get(j));
 
            // Incrementing List1 counter
            j++;
        }
 
        // Next line
        System.out.println();
 
        // Display message
        System.out.print("Merged List contents: ");
 
        // Iterators
        iterator = merged_list.iterator();
 
        // Iterating over merged List using hasNext() method
        // which holds true till there is single element
        // remaining
        while (iterator.hasNext()) {
 
            // Printing merged list contents
            System.out.print(iterator.next() + " ");
        }
    }
}
Producción

List1 contents: Geeks Geeks portal 
List2 contents: for is CSE portal 
Merged List contents: Geeks for Geeks is CSE portal portal 

Ejemplo 2: listas de enteros

Java

// Java Program to Combine Two List
// by Alternatingly Taking Elements
 
// importing required packages
import java.io.*;
import java.util.*;
import java.util.Iterator;
 
// Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating(declaring) List1
        List<Integer> list1 = new ArrayList<Integer>();
        // Adding elements to List1
        // Custom inputs
        list1.add(2);
        list1.add(4);
        list1.add(6);
 
        // Creating(declaring) List2
        List<Integer> list2 = new ArrayList<Integer>();
 
        // Adding elements to List2
        // Custom inputs
        list2.add(1);
        list2.add(3);
        list2.add(5);
        list2.add(7);
 
        // Display message
        System.out.print("List1 contents: ");
 
        // Iterating over List1
        Iterator iterator = list1.iterator();
 
        // ConditionCheck using hasNext() method which hold
        // true till single element in remaining List
        while (iterator.hasNext()) {
 
            // Printing List1 contents
            System.out.print(iterator.next() + " ");
        }
 
        // New line
        System.out.println();
 
        // Display message
        System.out.print("List2 contents: ");
        iterator = list2.iterator();
 
        // ConditionCheck using hasNext() method which hold
        // true till single element in remaining List
        while (iterator.hasNext()) {
 
            // Printing List2 contents
            System.out.print(iterator.next() + " ");
        }
        // Setting counters to zeros
        int i = 0;
        int j = 0;
 
        // Creating(declaring) merged list
        List<Integer> merged_list
            = new ArrayList<Integer>();
 
        // Iterating over both the lists
        // until the shorter list
        while (i < list1.size() && j < list2.size()) {
 
            // Step 1: Adding List2 element
            merged_list.add(list2.get(j));
 
            // Step 2: Adding List1 element
            merged_list.add(list1.get(i));
 
            // Incrementing counters
            i++;
            j++;
        }
 
        // Iterating over the remaining part of List1
 
        // Case 1: Input: ShorterList following BiggerList
        while (i < list1.size()) {
 
            // Merge remaining List to List1, and
            // making List2 final as NULL List
            merged_list.add(list1.get(i));
            i++;
        }
 
        // Case 2: Input: BiggerList following ShorterList
        while (j < list2.size()) {
 
            // Merge remaining List to List1,an d
            // making List2 -> NULL List
            merged_list.add(list2.get(j));
            j++;
        }
 
        // New line
        System.out.println();
 
        // Display message
        System.out.print("Merged List contents: ");
 
        // Iterating over merged list
        iterator = merged_list.iterator();
 
        // Condition check using hasNext() method which
        // holds true till there is single element remaining
        // in the List
        while (iterator.hasNext()) {
 
            // Printing merged List contents i.e
            // FinalList = List1 + List2(Null final List)
            System.out.print(iterator.next() + " ");
        }
    }
}
Producción

List1 contents: 2 4 6 
List2 contents: 1 3 5 7 
Merged List contents: 1 2 3 4 5 6 7 

Publicación traducida automáticamente

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