Heim  >  Artikel  >  Java  >  So verwenden Sie die EnumMap-Funktion in Java für Aufzählungszuordnungsvorgänge

So verwenden Sie die EnumMap-Funktion in Java für Aufzählungszuordnungsvorgänge

WBOY
WBOYOriginal
2023-06-26 18:23:562066Durchsuche

In Java ist der Enum-Typ ein sehr nützlicher Datentyp, der zur Darstellung von Aufzählungskonstanten verwendet werden kann. EnumMap ist eine spezielle Map-Implementierung in Java, die nur Schlüssel-Wert-Paare vom Typ Enum speichern kann. In diesem Artikel werde ich die Verwendung der EnumMap-Funktion und die Verwendung von EnumMap in Java für Aufzählungszuordnungsvorgänge vorstellen.

  1. Grundlegende Verwendung der EnumMap-Funktion

EnumMap5ea5ebc1d04e5996e8709b2b65356ee9, V> ist eine generische Klasse in Java, wobei K den Schlüssel des Aufzählungstyps und V den dem Schlüssel zugeordneten Wert darstellt. Nachdem eine EnumMap erstellt wurde, müssen ihre Schlüssel vom gleichen Aufzählungstyp stammen und alle Werte müssen vom gleichen Typ sein. Das Folgende ist die grundlegende Verwendung der EnumMap-Funktion:

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, "星期日");

Wir haben zuerst ein EnumMap-Objekt enumMap erstellt und jeden Wochentag und den entsprechenden chinesischen Namen über die Put-Methode in EnumMap in der EnumMap gespeichert. Auf diese Weise haben wir die Erstellung und Initialisierung einer grundlegenden EnumMap abgeschlossen.

  1. Initialisierung der EnumMap-Funktion

Im obigen Codebeispiel verwenden wir den Standardkonstruktor von EnumMap, der alle Werte automatisch auf Null initialisiert. Tatsächlich können wir zur Initialisierung auch einen anderen Konstruktor von EnumMap verwenden. Dieser Konstruktor legt einen Anfangswert fest und initialisiert alle Werte in der EnumMap auf diesen Anfangswert. Das Folgende ist der Initialisierungsbeispielcode der EnumMap-Funktion:

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);

Im obigen Beispielcode haben wir die Collections.singletonMap-Methode verwendet, um eine Map zu erstellen, die nur ein Schlüssel-Wert-Paar enthält, dessen Schlüssel null und dessen Wert „holiday“ ist ". Dann verwenden wir diese Map als Anfangswert, erstellen ein neues EnumMap-Objekt enumMapWithDefaultValue und kopieren die Schlüssel-Wert-Paare in der zuvor erstellten enumMap in dieses neue EnumMap-Objekt.

Mit diesem Beispielcode können wir verstehen, wie der Konstruktor von EnumMap zum Initialisieren verwendet wird und wie eine andere Map als Anfangswert zum Erstellen einer neuen EnumMap verwendet wird.

  1. Durchlaufen der EnumMap-Funktion

Das Durchlaufen aller Elemente in EnumMap ist normalerweise ein wesentlicher Vorgang. Wir können Iteratoren in Java verwenden, um diese Operation auszuführen. Das Folgende ist ein Beispielcode zum Durchlaufen von 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);
}

In diesem Beispielcode verwenden wir Iteratoren in Java, um alle Schlüssel-Wert-Paare in EnumMap zu durchqueren. Wir erhalten zuerst das EntrySet der EnumMap und verwenden dann den vom EntrySet zurückgegebenen Iterator, um alle Schlüssel-Wert-Paare nacheinander zu durchlaufen. Für jedes Schlüssel-Wert-Paar verwenden wir die Methode getKey, um den Schlüssel abzurufen, und die Methode getValue, um den Wert abzurufen, und geben sie an die Konsole aus.

Wir können auch eine foreach-Schleife verwenden, um alle Werte in der EnumMap zu durchlaufen. Verwenden Sie einfach den Aufzählungstyp als Schlüssel, um den Wert abzurufen. Diese Methode kann uns die häufige Verwendung der getKey-Methode zum Abruf des Schlüssels ersparen.

  1. Praktische Anwendungen der EnumMap-Funktion

Zusätzlich zu der oben vorgestellten grundlegenden Verwendung bietet die EnumMap-Funktion viele praktische Anwendungsszenarien.

4.1 Aufzählungszuordnungsoperationen

Die häufigste Verwendung von EnumMap besteht darin, Aufzählungstypen anderen Werten zuzuordnen. Im folgenden Beispielcode ordnen wir beispielsweise den Aufzählungstyp „Wochentag“ Zahlen (0–6) zu:

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 Aufzählungstypzähler

In einigen Fällen müssen wir einen Zähler implementieren, um eine bestimmte Menge eines Aufzählungstyps zu zählen. EnumMap kann diese Funktion einfach implementieren:

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));

Im obigen Beispielcode haben wir zunächst ein EnumMap-Objekt genderCount erstellt, um die Anzahl der Geschlechtstypen aufzuzeichnen. Als nächstes verwenden wir die Put-Methode in EnumMap, um die Nummer jedes Geschlechtstyps auf 0 zu initialisieren. Dann verwenden wir eine Liste, um die Geschlechterliste zu simulieren, und durchlaufen die Liste, um die Anzahl der Vorkommen jedes Geschlechts zu zählen. Abschließend geben wir die Anzahl der Männchen und Weibchen aus.

4.3 Aufzählungstyp-Rechner

Ähnlich wie der Aufzählungstypzähler kann EnumMap auch zum Implementieren der Addition und Subtraktion von Aufzählungstypen verwendet werden. Im folgenden Beispielcode haben wir beispielsweise einen einfachen Rechner implementiert, um zu zählen, wie oft ein bestimmter englischer Buchstabe in einem bestimmten Wort vorkommt:

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));
    }
}

Im obigen Beispielcode haben wir zunächst ein EnumMap-Objekt „letterCount“ erstellt, das zur Aufzeichnung verwendet wird die Häufigkeit, mit der jeder Buchstabe vorkommt. Anschließend verwenden wir eine for-Schleife, um den Aufzählungstyp „Letter“ zu durchlaufen und den Anfangswert jedes Buchstabens auf 0 zu setzen. Als nächstes haben wir ein String-Wort definiert, um Wörter zu simulieren. Wir durchlaufen jedes Zeichen im Wort und stellen fest, ob es sich um einen Großbuchstaben handelt. Wenn es sich um einen Großbuchstaben handelt, verwenden wir die Methode Letter.valueOf, um ihn in einen Letter-Typ umzuwandeln und sammeln die entsprechende Anzahl von Letter-Typen in LetterCount. Schließlich iterieren wir über den Aufzählungstyp „Letter“ und geben die Buchstaben aus, deren Vorkommen größer als 0 sind, sowie die entsprechenden Zeiten.

Zusammenfassung

In diesem Artikel haben wir die grundlegende Verwendung, Initialisierung, Durchquerung, praktische Anwendung usw. der EnumMap-Funktion vorgestellt. EnumMap ist eine sehr praktische Map-Implementierung in Java. Sie kann gut mit dem Enum-Typ verwendet werden, um Aufzählungszuordnungen, Aufzählungstypstatistiken, Taschenrechner und andere Anwendungen zu implementieren. Die Beherrschung der Verwendung von EnumMap wird dazu beitragen, die Entwicklungseffizienz und Codequalität von Java-Programmen zu verbessern.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die EnumMap-Funktion in Java für Aufzählungszuordnungsvorgänge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn