Splitting ArrayLists into Smaller Sublists
In Java, the ArrayList data structure provides a convenient way to store collections of objects efficiently. Sometimes, it becomes necessary to partition an ArrayList into multiple smaller sublists of a specified size. This article explores how to achieve this effectively.
Using subList() for Immutable Views
The subList() method allows you to create views of a portion of an ArrayList. The resulting sublists are immutable, meaning they cannot be modified.
List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)); List<Integer> head = numbers.subList(0, 4); List<Integer> tail = numbers.subList(4, 8);
After creating the sublists, any changes made to the original ArrayList will be reflected in the sublists. Conversely, modifications to the sublists will not affect the original ArrayList.
Creating Mutable Sublists
If you require mutable sublists, create new ArrayLists from the subList() views.
List<Integer> newHead = new ArrayList<>(head);
Chopped Function for Convenient Partitioning
For situations where multiple sublists are needed, consider creating a utility function like the following:
static <T> List<List<T>> chopped(List<T> list, final int L) { List<List<T>> parts = new ArrayList<>(); int N = list.size(); for (int i = 0; i < N; i += L) { parts.add(new ArrayList<>(list.subList(i, Math.min(N, i + L)))); } return parts; }
This function takes an ArrayList and a desired sublist length as parameters and returns a list of sublists.
Example Usage
List<Integer> numbers = Collections.unmodifiableList(Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)); List<List<Integer>> parts = chopped(numbers, 3); System.out.println(parts); // prints "[[5, 3, 1], [2, 9, 5], [0, 7]]"
Conclusion
By leveraging the subList() method and the utility function discussed in this article, you can effectively split an ArrayList into multiple smaller sublists, tailoring to your specific programming needs.
The above is the detailed content of How to Split an ArrayList into Smaller Sublists in Java?. For more information, please follow other related articles on the PHP Chinese website!