Casting Array to Collection and vice versa in Java

1. Array → Collection (List/Set)

Java provides multiple ways to convert an array into a collection (usually a List or Set).

✅ Using Arrays.asList()

import java.util.*;

public class Main {
    public static void main(String[] args) {
        String[] array = {"Java", "Python", "C++"};

        // Convert to List
        List<String> list = Arrays.asList(array);
        System.out.println(list); // [Java, Python, C++]

        // Note: This list is fixed-size (cannot add/remove)
    }
}

✅ Using new ArrayList<>(Arrays.asList(...))

List<String> modifiableList = new ArrayList<>(Arrays.asList(array));
modifiableList.add("Go");
System.out.println(modifiableList); // [Java, Python, C++, Go]

✅ Using Collections.addAll()

List<String> list2 = new ArrayList<>();
Collections.addAll(list2, array);
System.out.println(list2);

✅ Convert Array → Set

Set<String> set = new HashSet<>(Arrays.asList(array));
System.out.println(set);

2. Collection → Array

Any Collection in Java can be converted back to an array.

✅ Using toArray()

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

// Object[] array
Object[] array1 = list.toArray();

// String[] array
String[] array2 = list.toArray(new String[0]);

System.out.println(Arrays.toString(array1)); // [Java, Python, C++]
System.out.println(Arrays.toString(array2)); // [Java, Python, C++]

3. Special Case: Primitive Arrays

Reflection + Streams help when working with primitive arrays:

int[] nums = {1, 2, 3, 4};

// Convert int[] → List<Integer>
List<Integer> list = Arrays.stream(nums).boxed().toList();

// Convert List<Integer> → int[]
int[] nums2 = list.stream().mapToInt(Integer::intValue).toArray();

System.out.println(list);           // [1, 2, 3, 4]
System.out.println(Arrays.toString(nums2)); // [1, 2, 3, 4]

Summary

  • Array → Collection
    • Arrays.asList(array) (fixed size)
    • new ArrayList<>(Arrays.asList(array)) (modifiable)
    • Collections.addAll(list, array)
    • For Set: new HashSet<>(Arrays.asList(array))
  • Collection → Array
    • list.toArray()
    • list.toArray(new String[0])
    • For primitives: use Streams

Leave a Reply