Java Program to Combine Two List by Alternatively Taking Elements - GeeksforGeeks

22 Sep, 2021
A list is an ordered sequence of elements stored together to form a collection. A list can contain duplicate as well as null entries. A list allows us to perform index-based operations, that is additions, deletions, manipulations, and positional access. Java provides an in-built interface <<java.util>> to perform list as well as other class-based functions. 
Cases: There can occur two different scenarios while doing so as per the length of lists
If list 2 gets exhausted while adding elements alternatively then the remaining elements of list 1 are the second list is remaining elements of list 1 to be added in the same sequence of occurrence.If list 1 gets exhausted and so on as discussed in the above case vice-versa
If list 2 gets exhausted while adding elements alternatively then the remaining elements of list 1 are the second list is remaining elements of list 1 to be added in the same sequence of occurrence.
If list 1 gets exhausted and so on as discussed in the above case vice-versa
So, the Aim is to completely remove the elements from second one and add to first one list and whatever is left will be the second list.
Approach: The following approach is adopted to store elements alternatively in a merged list. 
Two lists are declared and initialized with a set of elements.
Two counters, i and j are maintained to iterate over the length of the lists. The loop runs until the shorter length of both the lists.
An empty list is maintained to store the merged contents of both the lists, in order of list1 followed by list2.
At the end of the loop, one of the list, that is a shorter one is exhausted. A loop is then used to iterate over the remaining elements of the longer list and store them at the end one by one.
The data type of the merged list should be similar to the individual lists.
Implementation: Two examples are discussed below considering both integer list and string lists
Example 1: String Lists
Java
// Java Program to Combine Two List// by Alternatingly Taking Elements // importing required packagesimport java.io.*;import java.util.*;import java.util.Iterator; // Class to access alterate elementsclass 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() + " ");        }    }}
List1 contents: Geeks Geeks portal 
List2 contents: for is CSE portal 
Merged List contents: Geeks for Geeks is CSE portal portal 
Example 2: Integer Lists
Java
// Java Program to Combine Two List// by Alternatingly Taking Elements // importing required packagesimport java.io.*;import java.util.*;import java.util.Iterator; // Classclass 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() + " ");        }    }}
List1 contents: 2 4 6 
List2 contents: 1 3 5 7 
Merged List contents: 1 2 3 4 5 6 7 
surindertarika1234
simmytarika5
surinderdawra388
Java-Collections
java-list
Picked
Java
Java Programs
Java
Java-Collections
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Constructors in Java
Exceptions in Java
Functional Interfaces in Java
Different ways of Reading a text file in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
How to Iterate HashMap in Java?
Program to print ASCII Value of a character