Java Collections

Java Collections

Java Collections

Collections adalah struktur data yang sudah disediakan oleh java untuk menyimpan serta memanipulasi data. Java collection menyediakan banyak object seperti interface(List, Set, Queue) dan kelas implementasinya seperti (ArrayList, LinkedList, HashSet, LinkedHashSet, PriorityQueue) dll.

Semua implementasi class java collections adalah generic, artinya kita bisa menggunakan class tersebut dengan data apapun.

Hierarchy Java Collections

Berikut adalah gambar hirarki java collections

struktur hirarki collection

Dari hirarki diatas collection di java ada tigas jenis yaitu List Set Queue.

Semua collection di java diawali dengan interface, Interface ini adalah kontrak representasi dari collections. Sehingga jika kita mau kita juga bisa membuat class implementasinya sendiri. Namun untuk implementasi collections tidak perlu khawatir karena semua interface collections di java sudah ada class implementasinya tersendiri.

Interface Iterable

Interface iterable merupakan root interface dari semua jenis collections untuk melakukan iterasi secara squencial, sederhanya iterface iterable mendukung perulangan foreach dalam collection.

Interface iterable hanya memiliki satu method:

Method Description
Iterator<T> iterator() digunakan untuk melakukan iterasi secara manual

Interface Collection

Interface collection merupakan root dari semua jenis collection, tidak ada implementasi langsung dari interface collection karena collection ini akan dibagi lagi menjadi List, Set, Queue.

Interface collection merupakan fondasi dasar yang berisi method untuk memanipulasi data collection.

Method Description
int size()
Returns: jumlah elemen dalam collection
boolean isEmpty()
Returns: boolean true, jika collection tidak berisi elemen data
boolean contains(Object o)
Returns: boolean true, jika collection ini berisikan elemen yang ditentukan dari parameter.
Params: o - jenis elemen yang akan diuji didalam collection
boolean add(E e)
Returns: boolean true, jika elemen berhasil ditambahkan dalam collection.
Params: e - jenis elemen yang akan diuji untuk ditambahkan
boolean remove(Object o)
Returns: boolean true, jika suatu elemen dihapus
Params: o - elemen yang akan dihapus dari collection, jika ada
boolean addAll(Collection<? extends E> c)
menambahkan elemen dalam satu kelompok dalam bentuk collection
Returns: boolean true, jika elemen berhasil ditambahkan
Params: c - berupa collection yang berisi elemen yang akan ditambahkan didalam collection
boolean removeAll(Collection<?> c)
menghapus elemen dalam collection dengan collection yang akan dihapus
Returns: boolean true, jika elemen berhasil menghapus
Params: c - berupa collection yang akan dihapus didalam collection
void clear()
menghapus semua elemen dalam collection, collection akan kosong jika memanggil method ini

Interface List

Interface list adalah jenis struktur data collection yang sifatnya:

  • elemen yang disimpan didalam list bisa duplikat, artinya kita dapat menambah data dengan nama yang sama
  • elemen yang disimpan didalam list berurutan sesuai dengan posisi saat menambahkan data
  • setiap elemen yang disimpan didalam list memiliki index

List adalah interface oleh karena itu kita tidak dapat mengimplementasikan collection ini, namun di java ada beberapa class yang mengimplementasi List seperti ArrayList, LinkedList.

Karena List adalah interface, ada beberapa method yang ditambahkan:

Method Description
E get(int index)
mendapatkan elemen dalam collection dengan posisi yang ditentukan
Returns: elemen dari index yang ditentukan
E set(int index, E element)
merubah elemen pada index yang ditentukan dalam list
Returns: generic elemen yang dintentukan
Params: index - posisi index yang dirubah. element - elemen baru yang disimpan
void add(int index, E elements)
menyisipkan elemen yang ditentukan dengan posisi index yang sudah ditentukan didalam list
E remove(int index)
menghapus elemen pada posisi index yang ditentukan, lalu mengeser elemen berikutnya
Returns: elemen sebelumnya pada posisi yang ditentukan
int indexOf(Object o)
mendapatkan posisi index dari object yang ditentukan
Returns: mengembalikan posisi index, jika object ditemukan dalam list, jika tidak -1
Params: o - elemen yang dicari posisi index
int lastIndexOf(Object o)
ListIterator<E> listIterator()

Class ArrayList

ArrayList adalah class implementasi collection list yang menggunakan konsep array.. Secara default kapasitas array didalam ArrayList adalah 10. Namun ketika kita menambahkan data dan kapasitas array didalam ArrayList sudah penuh secara otomatis ArrayList akan menambahkan kapasitas baru.

ArrayList<String> list = new ArrayList<>() /*default kapasitas array 10*/ ArrayList<String> list = new ArrayList<>(100) /*kita bisa menentukan kapasitas array*/ /*polymorphism*/ List<String> list = new ArrayList<>()

Karena ArrayList adalah implementasi List, oleh karena itu semua method yang ada pada interface collection dan interface list otomatis dimiliki oleh class ArrayList.

Class LinkedList

LinkedList adalah class implementasi collection list sekaligus collection queue yang menggunakan konsep Double LinkedList.

LinkedList<String> list = new LinkedList<>() List<String> list = new LinkedList<>()

Immutable List

Secara default collection list dijava seperti ArrayList LinkedList bersifat mutable(bisa diubah). Kita dapat membuat data list collection bersifat immutable(tidak bisa diubah).

Method Description
Collections.emptyList()
Membuat immutable list kosong
Collections.singletoList(e)
Membuat immutable list berisi 1 element
List.of(e ..)
Membuat immutable list dari element2
Collections.unmodifiableList(list)
Membuat mutable list menjadi immutable