Container merupakan sebuah entitas yang menampung beberapa elemen data dengan jenis data tertentu. Container dalam kehidupan nyata bisa kita temui seperti halnya kardus, lemari, tas, ember, dan bentuk wadah lain yang dapat menampung barang atau benda. Dalam pemrograman ada banyak sekali jenis dari container, diantaranya dapat berupa list, stack, map, queue dan lain sebagainya.

Bentuk - Bentuk Container

Ada berbagai macam bentuk kontainer yang digunakan sebagai standar dalam pemrograman, masing - masing dapat dibedakan berdasarkan tiga properti berikut1:

  • Struktur(Structure) : Beberapa container menyimpan elemennya dalam bentuk terstruktur, dan ada juga yang tidak terstruktur. Container yang tidak memiliki struktur misalnya map dimana semua elemennya bisa ditaruh sesuka kita. Container yang memiliki struktur linear misalnya stack, queue, dan list.
  • Batasan Akses (Access Restriction) : Container yang terstruktur memiliki batasan akses atas elemen didalamnya sehingga pengguna hanya diperbolehkan untuk menambahkan, mengurangi serta menggunakan elemen pada lokasi tertentu. Seperti contohnya pada stack kita hanya dapat mengurangi dan menambahkan elemen pada bagian akhir dari container, sedangkan list dapat kita bisa mengakses elemen manapun yang kita mau. Container yang memungkinkan kita untuk mengakses semua elemennya dapat disebut tranversable, enumerable, atau iterable.
  • Kunci Akses(Keyed Acccess) : Container yang memungkinkan kita untuk mengaksesnya menggunakan kunci, misalnya seperti map dimana untuk mengakses elemennya perlu menggunakan index yang berupa kunci.

Bentuk Dasar Container

Seperti yang telah dijelaskan sebelumnya, container memiliki bentuk yang bermacam - macam, sehingga di golang container merupakan sebuah tipe interface yang merupakan tipe data abstrak (Abstract Data Type). Kita tidak bisa memastikan apakah sebuah kontainer itu terstruktur atau tidak, apakah kontainer tersebut memiliki batasan akses atau tidak, dan apakah kontainer tersebut memerlukan kunci untuk mengakses elemennya.

Yang perlu kita tahu adalah Container memiliki jumlah elemen, sehingga Container dapat memiliki operasi Size(). Kita juga bisa melihat apakah Sebuah Container itu kosong atau atau penuh, jadi container bisa memiliki operasi Empty() dan Full(). Dan karena container tidak dapat memiliki operasi penambahan dan pengurangan data yang spesifik, maka container hanya bisa memiliki operasi Clear() untuk mengosongkan container tersebut1.

type Container interface {
  Size() int
  Empty() bool
  Full() bool
  Clear()
}
Code Snippet 1: Container Interface

Referensi


  1. Go Data Structure And Algorithms 1st Edition by Christopher Fox ↩︎