Generic Collections

Dengan Generic Collections di C#, kita bisa mengelola dan memanipulasi data dengan lebih efisien tanpa khawatir soal tipe data yang salah atau kode berulang. Misalnya, di klinik kita bisa pakai List<Patient> untuk menyimpan data pasien atau Dictionary<InsuranceType, List<Patient>> untuk mengatur pasien berdasarkan tipe asuransi. Koleksi generik ini membantu mengurangi error, meningkatkan performa aplikasi, dan membuat kode kita lebih rapi serta mudah dibaca

Apa itu Generic Collections?

Di dunia pemrograman, mengelola data adalah hal yang super penting. Nah, salah satu cara yang keren untuk melakukannya adalah dengan menggunakan Generic Collections. Apa sih sebenarnya generic collections itu? Simpelnya, mereka adalah kumpulan objek yang bisa kita gunakan tanpa harus menentukan tipe datanya sejak awal. Ini bikin kode kita lebih fleksibel dan reusable.

List<T>

Pertama, mari kita bahas List<T>. Pasti kalian udah sering denger kan soal list ini?

Apa itu List<T>? List<T> adalah koleksi yang memungkinkan kita menyimpan elemen dalam urutan tertentu. Kita bisa tambahin, hapus, atau akses elemen berdasarkan indeks.

Kenapa List<T>? Karena dia sangat fleksibel dan mudah digunakan. List<T> ini sering dipakai karena mendukung banyak operasi seperti pencarian, pengurutan, dan lainnya.

Contoh:

List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

Dictionary<TKey, TValue>

Berikutnya, ada Dictionary<TKey, TValue>. Ini salah satu favoritku karena sangat praktis!

Apa itu Dictionary<TKey, TValue>? Dictionary ini memungkinkan kita menyimpan pasangan key-value. Bayangkan seperti kamus yang punya kata dan definisinya.

Kenapa Dictionary<TKey, TValue>? Karena kita bisa akses data dengan cepat menggunakan kuncinya. Ini sangat berguna buat lookup data.

Contoh:

Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 25;
ages["Bob"] = 30;

foreach (var kvp in ages)
{
    Console.WriteLine($"{kvp.Key} is {kvp.Value} years old");
}

Koleksi Generik Lainnya

Selain List dan Dictionary, ada juga beberapa koleksi generik lainnya yang tidak kalah menarik:

  • Queue<T>: Koleksi yang bekerja dengan prinsip FIFO (First In, First Out). Cocok buat antrian.
  • Stack<T>: Koleksi yang bekerja dengan prinsip LIFO (Last In, First Out). Mirip seperti tumpukan piring.
  • HashSet<T>: Koleksi yang menyimpan elemen unik tanpa urutan tertentu. Berguna buat menghindari duplikasi.

Contoh Implementasi dengan Generic Collections

Enum InsuranceType
Pertama, kita buat enum untuk InsuranceType:

public enum InsuranceType
{
    NoInsurance,
    PrivateInsurance,
    BPJS
}

Kelas Pasien
Sekarang, kita buat kelas Patient yang merepresentasikan pasien dalam sistem:

public class Patient
{
    public string Name { get; set; }
    public int Age { get; set; }
    public InsuranceType Insurance { get; set; }
}

Kelas Klinik
Lalu, kita buat kelas Clinic yang akan mengelola daftar pasien berdasarkan jenis asuransi mereka.

public class Clinic
{
    public List<Patient> NoInsurancePatients { get; set; }
    public List<Patient> PrivateInsurancePatients { get; set; }
    public List<Patient> BPJSPatients { get; set; }

    public Clinic()
    {
        NoInsurancePatients = new List<Patient>();
        PrivateInsurancePatients = new List<Patient>();
        BPJSPatients = new List<Patient>();
    }

    public void AddPatient(Patient patient)
    {
        switch (patient.Insurance)
        {
            case InsuranceType.NoInsurance:
                NoInsurancePatients.Add(patient);
                break;
            case InsuranceType.PrivateInsurance:
                PrivateInsurancePatients.Add(patient);
                break;
            case InsuranceType.BPJS:
                BPJSPatients.Add(patient);
                break;
        }
    }

    public void DisplayPatients()
    {
        Console.WriteLine("Patients without Insurance:");
        foreach (var patient in NoInsurancePatients)
        {
            Console.WriteLine($"Name: {patient.Name}, Age: {patient.Age}");
        }

        Console.WriteLine("\nPatients with Private Insurance:");
        foreach (var patient in PrivateInsurancePatients)
        {
            Console.WriteLine($"Name: {patient.Name}, Age: {patient.Age}");
        }

        Console.WriteLine("\nPatients with BPJS:");
        foreach (var patient in BPJSPatients)
        {
            Console.WriteLine($"Name: {patient.Name}, Age: {patient.Age}");
        }
    }
}

Penggunaan di Program Utama

Sekarang kita buat contoh bagaimana menggunakan kelas Clinic dan Patient di dalam program utama:

class Program
{
    static void Main(string[] args)
    {
        // Membuat instance klinik
        Clinic clinic = new Clinic();

        // Menambahkan pasien
        clinic.AddPatient(new Patient { Name = "John Doe", Age = 30, Insurance = InsuranceType.NoInsurance });
        clinic.AddPatient(new Patient { Name = "Jane Smith", Age = 25, Insurance = InsuranceType.PrivateInsurance });
        clinic.AddPatient(new Patient { Name = "Yudi Santoso", Age = 40, Insurance = InsuranceType.BPJS });

        // Menampilkan daftar pasien
        clinic.DisplayPatients();
    }
}

Penjelasan

  • InsuranceType Enum: Enum ini membuat jenis asuransi lebih terstruktur dan mudah digunakan.
  • Patient Class: Mewakili pasien dengan properti seperti nama, umur, dan jenis asuransi.
  • Clinic Class: Mengelola daftar pasien berdasarkan jenis asuransi menggunakan List<Patient>.
  • Main Program: Membuat instance klinik, menambahkan pasien, dan menampilkan daftar pasien berdasarkan jenis asuransi.

Dengan pendekatan ini, kita bisa dengan mudah mengelola dan mengatur pasien berdasarkan jenis asuransi mereka, serta memanfaatkan kekuatan dan fleksibilitas dari Generic Collections.

Kenapa Kita Butuh Generic Collections?

Kelebihan utama dari generic collections adalah mereka bisa mengurangi jumlah error dan meningkatkan performa. Dengan menentukan tipe data di awal, kita nggak perlu khawatir soal konversi tipe yang salah. Ini juga bikin kode kita lebih bersih dan mudah dibaca.

Penutup

Jadi, itulah sedikit pengenalan tentang Generic Collections. Dengan memahami List, Dictionary, dan koleksi lainnya, kita bisa menulis kode yang lebih efisien dan kuat. Yuk, terus eksplorasi dan jangan ragu buat eksperimen dengan berbagai koleksi ini di proyek kalian!

Semoga pembahasan kita kali ini bermanfaat dan bikin belajar jadi lebih menyenangkan.