Kenapa perlu mengubah Array ke List ?

Biasanya karena ada kebutuhan kita memakai library lain yang masukannya harus dalam bentuk List. Sementara di code yang sebelumnya, yang kita punyai hanyalah variable dalam bentuk Array. Misalnya dalam kasus membaca file .csv , biasanya kembaliannya adalah Array, berisikan data record setiap baris. Kemudian ada kebutuhan selanjutnya untuk mengolah dan menambahkan data ke struktur data tersebut. Agar mudah diproses dan di jadikan input parameter fungsi lain, maka diubahlah ke List.

Bagaimana caranya ?


1. pakai Arrays.asList()

import java.util.Arrays;
import java.util.List;
.
.
Integer[] umurKaryawan = {21,23,28,29,34,39,41};
List<Integer> umurKaryawanList = Arrays.asList(umurKaryawan);

Kekurangannya :

hasilnya adalah List yang ukurannya tetap, tidak bisa ditambah atau dikurangi. Sehingga akan muncul error java.lang.UnsupportedOperationException kalau dilakukan operasi tambah atau delete list. Tetapi tetap bisa dilakukan modifikasi atas isi listnya.

umurKaryawanList.add(43); --> throw java.lang.UnsupportedOperationException
umurKaryawanList.remove(1); --> throw java.lang.UnsupportedOperationException
umurKaryawanList.set(1,22); --> its OK

2. pakai new ArrayList<>(Arrays.asList())

Kalau kebutuhannya cuma mengubah Array ke List, maka cukup cara nomor 1 diatas. Akan tetapi kalau ternyata kita juga butuh untuk menambah atau mengurangi item di dalamnya setelah, maka kita harus mengubahnya menjadi object List yang baru. Seperti yang dibawah ini :

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
.
.
Integer[] umurKaryawan = {21,23,28,29,34,39,41};
List<Integer> umurKaryawanList = new ArrayList<Integer>(Arrays.asList(umurKaryawan));

Kalau dilakukan operasi tambah dan delete, tetap aman.

umurKaryawanList.add(43); --> its OK
umurKaryawanList.remove(1); --> its OK
umurKaryawanList.set(1,22); --> its OK

3. pakai stream java 8 , dengan Collectors.toList
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
.
.
Integer[] umurKaryawan = {21,23,28,29,34,39,41};
List<Integer> umurKaryawanListOf = Arrays.stream(umurKaryawan).collect(Collectors.toList());

hasilnya adalah List yang baru dan bisa dimodifikasi termasuk bisa diset nilainya yang sudah ada. Sehingga aman kalau dilakukan operasi tambah, delete, set, clear list.

umurKaryawanListCollectors.add(43); --> its OK
umurKaryawanListCollectors.remove(1); --> its OK
umurKaryawanListCollectors.set(1,22); --> its OK

3. pakai java 9 , dengan List.of()
import java.util.List;
.
.
Integer[] umurKaryawan = {21,23,28,29,34,39,41};
List<Integer> umurKaryawanListOf = List.of(umurKaryawan);

Kekurangannya :

hasilnya adalah List yang tidak bisa dimodifikasi termasuk tidak bisa diset nilainya yang sudah ada. Sehingga akan muncul error java.lang.UnsupportedOperationException kalau dilakukan operasi tambah, delete, set, clear list.

umurKaryawanListOf.add(43); --> throw java.lang.UnsupportedOperationException
umurKaryawanListOf.remove(1); --> throw java.lang.UnsupportedOperationException
umurKaryawanListOf.set(1,22); --> throw java.lang.UnsupportedOperationException

Demikianlah beberapa cara untuk mengubah Array ke List dalam bahasa Java.