How to split a list into two sublists in Java

3 Answers

0 votes
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

public class MyClass {
    public static<T> List[] split(List<T> list) {
		List<T> list1 = new ArrayList();
		List<T> list2 = new ArrayList();

		int size = list.size();
        int mid = (size + 1) / 2;
        
		for (int i = 0; i < size; i++) {
			if (i < mid) {
				list1.add(list.get(i));
			}
			else {
				list2.add(list.get(i));
			}
		}

		return new List[] {list1, list2};
	}

    public static void main(String args[]) {
        List<String> list = Arrays.asList("java", "c", "c++", "rust", "c#", "python", "php");

		List[] lists = split(list);

		System.out.println(lists[0]);
		System.out.println(lists[1]);
    }
}
 
 
 
 
 
/*
run:
 
[java, c, c++, rust]
[c#, python, php]

*/

 



answered Mar 13, 2023 by avibootz
0 votes
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;

public class MyClass {
    public static<T> List[] split(List<T> list) {
	    int size = list.size();
        int mid = (size + 1) / 2;
        
		List<T> list1 = new ArrayList<>(list.subList(0, mid));
        List<T> list2 = new ArrayList<>(list.subList(mid, size));
        
		return new List[] {list1, list2};
	}

    public static void main(String args[]) {
        List<String> list = Arrays.asList("java", "c", "c++", "rust", "c#", "python", "php");

		List[] lists = split(list);

		System.out.println(lists[0]);
		System.out.println(lists[1]);
    }
}
 
 
 
 
 
/*
run:
 
[java, c, c++, rust]
[c#, python, php]

*/

 



answered Mar 13, 2023 by avibootz
0 votes
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;

public class MyClass {
    public static<T> List[] split(List<T> list) {
		int mid = (list.size() - 1) / 2;
 
        List<List<T>> lists = new ArrayList<> (
            list.stream()
            .collect(Collectors.partitioningBy(s -> list.indexOf(s) > mid))
            .values()
        );
 
        return new List[] {lists.get(0), lists.get(1)};
	}

    public static void main(String args[]) {
        List<String> list = Arrays.asList("java", "c", "c++", "rust", "c#", "python", "php");

		List[] lists = split(list);

		System.out.println(lists[0]);
		System.out.println(lists[1]);
    }
}
 
 
 
 
 
/*
run:
 
[java, c, c++, rust]
[c#, python, php]

*/

 



answered Mar 13, 2023 by avibootz
...