Search code examples
javaarrayslistarraylistround-robin

How to create a new List from merging 3 ArrayLists in round robin style?


I have 3 arrays. I want to merge the 3 arrays and create a new array that shows all the merged integers. I would like this new array to be in round robin style.

Example input:

array = {arr1 = 1, 2, 3, arr2 = 4, 5, 6, arr3 = 7, 8, 9}

Example output:

arr4 = 1, 4, 7, 2, 5, 8, 3, 6, 9

I'm supposed to use this function but I don't understand how can I use a listOfLists:

String roundRobin(List<List<Integer>>listOfLists) {

Solution

  • I think just loop input and get element and add element to a list of array is easy to understand.

    public static List<Integer> roundRobin(List<List<Integer>> listOfLists) {
        if (listOfLists == null || listOfLists.isEmpty()) {
            return new ArrayList<>();
        }
    
        int maxLength = -1;
        for (List<Integer> list : listOfLists) {
            if (list.size() > maxLength) {
                maxLength = list.size();
            }
        }
    
        List<Integer> result = new ArrayList<>(maxLength * listOfLists.size());
        for (int i = 0; i < maxLength; i++) {
            for (List<Integer> list : listOfLists) {
                if (i < list.size()) {
                    result.add(list.get(i));
                }
            }
        }
    
        return result;
    
    }