Java Program to Combine Two List by Alternatively Taking Elements

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
 
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 alternate 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
				
					



