Rumah  >  Artikel  >  Java  >  Cara menggunakan fungsi EnumMap dalam Java untuk operasi pemetaan penghitungan

Cara menggunakan fungsi EnumMap dalam Java untuk operasi pemetaan penghitungan

WBOY
WBOYasal
2023-06-26 18:23:562063semak imbas

Di Java, jenis Enum ialah jenis data yang sangat berguna yang boleh digunakan untuk mewakili pemalar penghitungan. EnumMap ialah pelaksanaan Peta khas di Jawa, yang hanya boleh menyimpan pasangan nilai kunci jenis Enum. Dalam artikel ini, saya akan memperkenalkan penggunaan fungsi EnumMap dan cara menggunakan EnumMap dalam Java untuk operasi pemetaan penghitungan.

  1. Penggunaan asas fungsi EnumMap

EnumMapfb016e59bb8da0791743c587ca64a23d, V> ialah kelas generik di Jawa, dengan K mewakili kunci jenis penghitungan dan V mewakili nilai yang dipetakan pada kunci. Selepas EnumMap dibuat, kuncinya mesti datang daripada jenis penghitungan yang sama, dan semua nilai mestilah daripada jenis yang sama. Berikut ialah penggunaan asas fungsi EnumMap:

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

Kami mula-mula mencipta objek EnumMap enumMap, dan disimpan setiap hari dalam seminggu dan nama Cina yang sepadan ke dalam EnumMap melalui kaedah put dalam EnumMap. Dengan cara ini kami telah menyelesaikan penciptaan dan permulaan EnumMap asas.

  1. Inisialisasi fungsi EnumMap

Dalam contoh kod di atas, kami menggunakan pembina lalai EnumMap, yang secara automatik akan memulakan semua nilai kepada null. Malah, kita juga boleh menggunakan pembina lain EnumMap untuk permulaan. Pembina ini akan menetapkan nilai awal dan memulakan semua nilai dalam EnumMap kepada nilai awal ini. Berikut ialah kod sampel permulaan bagi fungsi EnumMap:

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

// 使用初始化值,将所有键值对的值都设置为"假期" 
EnumMap defaultEnumMap = new EnumMap<>(Weekday.class);
defaultEnumMap.putAll(Collections.singletonMap(null, "假期"));
EnumMap enumMapWithDefaultValue = new EnumMap<>(defaultEnumMap);
enumMapWithDefaultValue.putAll(enumMap);

Dalam kod sampel di atas, kami menggunakan kaedah Collections.singletonMap untuk mencipta Peta yang mengandungi hanya satu pasangan nilai kunci, yang kuncinya adalah nol dan nilainya ialah "cuti. ". Kemudian, kami menggunakan Peta ini sebagai nilai awal, mencipta objek EnumMap baharu enumMapWithDefaultValue, dan menyalin pasangan nilai kunci dalam enumMap yang dibuat sebelum ini ke objek EnumMap baharu ini.

Kod sampel ini membolehkan kami memahami cara menggunakan pembina EnumMap untuk memulakan, dan cara menggunakan Peta lain sebagai nilai awal untuk mencipta EnumMap baharu.

  1. Perjalanan fungsi EnumMap

Merentasi semua elemen dalam EnumMap biasanya merupakan operasi penting. Kita boleh menggunakan iterator dalam Java untuk mencapai operasi ini. Berikut ialah contoh kod untuk merentasi EnumMap:

EnumMap<Weekday, String> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, "星期一");
enumMap.put(Weekday.TUESDAY, "星期二");
enumMap.put(Weekday.WEDNESDAY, "星期三");
enumMap.put(Weekday.THURSDAY, "星期四");
enumMap.put(Weekday.FRIDAY, "星期五");
enumMap.put(Weekday.SATURDAY, "星期六");
enumMap.put(Weekday.SUNDAY, "星期日");

// 使用迭代器遍历EnumMap中的所有键值对
Iterator> iterator = enumMap.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry entry = iterator.next();
    Weekday key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key + ": " + value);
}

// 使用foreach循环遍历EnumMap中的所有值
for (String value : enumMap.values()) {
    System.out.println(value);
}

Dalam kod sampel ini, kami menggunakan iterator dalam Java untuk melintasi semua pasangan nilai kunci dalam EnumMap. Kami mula-mula mendapatkan Set entri EnumMap, dan kemudian gunakan iterator yang dikembalikan oleh entrySet untuk merentasi semua pasangan nilai kunci dalam urutan. Untuk setiap pasangan nilai kunci, kami menggunakan kaedah getKey untuk mendapatkan kunci dan kaedah getValue untuk mendapatkan nilai dan mengeluarkannya ke konsol.

Kita juga boleh menggunakan gelung foreach untuk melelaran melalui semua nilai dalam EnumMap. Hanya gunakan jenis enumerasi sebagai kunci untuk mendapatkan nilai Kaedah ini boleh mengelakkan kita kerap menggunakan kaedah getKey untuk mendapatkan kunci.

  1. Aplikasi praktikal fungsi EnumMap

Selain penggunaan asas yang diperkenalkan di atas, fungsi EnumMap mempunyai banyak senario aplikasi praktikal.

4.1 Operasi pemetaan penghitungan

Penggunaan EnumMap yang paling biasa ialah untuk memetakan jenis penghitungan kepada nilai lain. Sebagai contoh, dalam kod sampel berikut, kami memetakan jenis penghitungan Hari Minggu kepada nombor (0-6):

public enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

// 使用EnumMap将Weekday枚举映射到数字
EnumMap<Weekday, Integer> enumMap = new EnumMap<>(Weekday.class);
enumMap.put(Weekday.MONDAY, 0);
enumMap.put(Weekday.TUESDAY, 1);
enumMap.put(Weekday.WEDNESDAY, 2);
enumMap.put(Weekday.THURSDAY, 3);
enumMap.put(Weekday.FRIDAY, 4);
enumMap.put(Weekday.SATURDAY, 5);
enumMap.put(Weekday.SUNDAY, 6);

4.2 Pembilang jenis penghitungan

Dalam beberapa kes, kita perlu melaksanakan pembilang untuk mengira kuantiti jenis penghitungan tertentu. EnumMap boleh melaksanakan fungsi ini dengan mudah Kod sampel adalah seperti berikut:

public enum Gender {
    MALE, FEMALE
}

// 使用EnumMap实现枚举类型计数器
EnumMap<Gender, Integer> genderCount = new EnumMap<>(Gender.class);
genderCount.put(Gender.MALE, 0);
genderCount.put(Gender.FEMALE, 0);

List<Gender> genderList = Arrays.asList(
    Gender.MALE, 
    Gender.MALE, 
    Gender.MALE, 
    Gender.FEMALE, 
    Gender.FEMALE
);

for (Gender gender : genderList) {
    genderCount.put(gender, genderCount.get(gender) + 1);
}

System.out.println("男性数量:" + genderCount.get(Gender.MALE));
System.out.println("女性数量:" + genderCount.get(Gender.FEMALE));

Dalam kod sampel di atas, kami mula-mula mencipta objek EnumMap genderCount untuk merekodkan bilangan jenis Jantina. Seterusnya, kami menggunakan kaedah put dalam EnumMap untuk memulakan nombor setiap jenis Jantina kepada 0. Kemudian, kami menggunakan Senarai untuk mensimulasikan senarai jantina dan melintasi senarai untuk mengira bilangan kejadian setiap Jantina. Akhirnya, kami mengeluarkan bilangan lelaki dan perempuan.

4.3 Kalkulator jenis penghitungan

Serupa dengan pembilang jenis penghitungan, EnumMap juga boleh digunakan untuk melaksanakan penambahan dan penolakan jenis penghitungan. Sebagai contoh, dalam kod sampel berikut, kami melaksanakan kalkulator mudah untuk mengira bilangan kali huruf Inggeris tertentu muncul dalam perkataan tertentu:

public enum Letter {
    A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
}

// 使用EnumMap实现枚举类型计算器
EnumMap<Letter, Integer> letterCount = new EnumMap<>(Letter.class);
for (Letter letter : Letter.values()) {
    letterCount.put(letter, 0);
}

String word = "Hello, World!";
for (int i = 0; i < word.length(); i++) {
    char c = word.charAt(i);
    if (c >= 'A' && c <= 'Z') {
        Letter letter = Letter.valueOf(String.valueOf(c));
        letterCount.put(letter, letterCount.get(letter) + 1);
    }
}

for (Letter letter : Letter.values()) {
    if (letterCount.get(letter) > 0) {
        System.out.println(letter + ": " + letterCount.get(letter));
    }
}

Dalam kod contoh di atas, kami mula-mula mencipta objek EnumMap letterCount , digunakan untuk merekod bilangan kali setiap huruf muncul. Kami kemudian menggunakan gelung for untuk mengulangi jenis penghitungan Surat, menetapkan nilai awal setiap huruf kepada 0. Seterusnya, kami mentakrifkan perkataan rentetan untuk mensimulasikan perkataan. Kami mengulangi setiap aksara dalam perkataan dan menentukan sama ada ia adalah huruf besar. Jika ia adalah huruf besar, kami menggunakan kaedah Letter.valueOf untuk menukarnya kepada jenis Letter dan mengumpul bilangan jenis Letter yang sepadan dalam letterCount. Akhir sekali, kami mengulangi jenis penghitungan Surat dan mengeluarkan huruf yang kejadiannya lebih besar daripada 0 dan masa yang sepadan.

Ringkasan

Dalam artikel ini, kami memperkenalkan penggunaan asas, permulaan, traversal, aplikasi praktikal, dll. bagi fungsi EnumMap. EnumMap ialah pelaksanaan Peta yang sangat praktikal dalam Java Ia boleh digunakan dengan baik dengan jenis Enum untuk melaksanakan pemetaan penghitungan, statistik jenis penghitungan, kalkulator dan aplikasi lain. Menguasai penggunaan EnumMap akan membantu meningkatkan kecekapan pembangunan dan kualiti kod program Java.

Atas ialah kandungan terperinci Cara menggunakan fungsi EnumMap dalam Java untuk operasi pemetaan penghitungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn