Java : EnumMap 示例

Java 中的 EnumMap (Java SE 23 & JDK 23) 及其示例。
您将找到大多数 EnumMap<K extends Enum<K>,V> 方法的代码示例。

注解 :

  • 本文可能使用了翻译软件以方便阅读。 另请查看英文原文

简介

专用于枚举类型键的 Map 实现。枚举映射中的所有键都必须来自在创建映射时明确或隐式指定的单个枚举类型。枚举映射在内部表示为数组。这种表示形式非常紧凑且高效。 (机器翻译)

Class diagram

final var map = new EnumMap<DayOfWeek, String>(DayOfWeek.class);
System.out.println(map); // {}

map.put(DayOfWeek.MONDAY, "aaa");
map.put(DayOfWeek.TUESDAY, "bbb");
map.put(DayOfWeek.WEDNESDAY, "ccc");

System.out.println(map); // {MONDAY=aaa, TUESDAY=bbb, WEDNESDAY=ccc}

System.out.println(map.get(DayOfWeek.MONDAY)); // aaa
System.out.println(map.get(DayOfWeek.TUESDAY)); // bbb
System.out.println(map.get(DayOfWeek.WEDNESDAY)); // ccc
System.out.println(map.get(DayOfWeek.THURSDAY)); // null

map.remove(DayOfWeek.MONDAY);
System.out.println(map); // {TUESDAY=bbb, WEDNESDAY=ccc}

Constructors

EnumMap (Class<K> keyType)

创建一个具有指定键类型的空枚举映射。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);
System.out.println(map); // {}
System.out.println(map.isEmpty()); // true

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(map.size()); // 3

EnumMap (EnumMap<K,? extends V> m)

创建一个具有与指定枚举映射相同键类型的枚举映射,最初包含相同的映射关系(如果有)。 (机器翻译)

final var m = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);
m.put(DayOfWeek.MONDAY, 10);
m.put(DayOfWeek.TUESDAY, 20);
m.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(m); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(m.size()); // 3

final var map = new EnumMap<>(m);
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(map.size()); // 3

EnumMap (Map<K,? extends V> m)

创建一个从指定映射初始化的枚举映射。 (机器翻译)

final var m = new HashMap<DayOfWeek, Integer>();
m.put(DayOfWeek.MONDAY, 10);
m.put(DayOfWeek.TUESDAY, 20);
m.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(m); // {WEDNESDAY=30, TUESDAY=20, MONDAY=10}
System.out.println(m.size()); // 3

final var map = new EnumMap<>(m);
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(map.size()); // 3

Methods

void clear ()

从此映射中删除所有映射。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(map.size()); // 3

map.clear();
System.out.println(map); // {}
System.out.println(map.size()); // 0

EnumMap<K,V> clone ()

返回此枚举映射的浅表副本。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

final var cloned = map.clone();
System.out.println(cloned); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(cloned.getClass()); // class java.util.EnumMap

boolean containsKey (Object key)

如果此映射包含指定键的映射,则返回 true。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

System.out.println(map.containsKey(DayOfWeek.MONDAY)); // true
System.out.println(map.containsKey(DayOfWeek.TUESDAY)); // true
System.out.println(map.containsKey(DayOfWeek.WEDNESDAY)); // true
System.out.println(map.containsKey(DayOfWeek.SUNDAY)); // false

boolean containsValue (Object value)

如果此映射将一个或多个键映射到指定值,则返回 true。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);
map.put(DayOfWeek.THURSDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30, THURSDAY=30}

System.out.println(map.containsValue(0)); // false
System.out.println(map.containsValue(10)); // true
System.out.println(map.containsValue(20)); // true
System.out.println(map.containsValue(30)); // true
System.out.println(map.containsValue(40)); // false

Set<Map.Entry<K,V>> entrySet ()

返回此映射中包含的映射的集合视图。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 1);
map.put(DayOfWeek.TUESDAY, 2);
map.put(DayOfWeek.WEDNESDAY, 3);

System.out.println(map); // {MONDAY=1, TUESDAY=2, WEDNESDAY=3}

final var entries = map.entrySet();
System.out.println(entries); // [MONDAY=1, TUESDAY=2, WEDNESDAY=3]

map.replace(DayOfWeek.TUESDAY, 20);
System.out.println(map); // {MONDAY=1, TUESDAY=20, WEDNESDAY=3}
System.out.println(entries); // [MONDAY=1, TUESDAY=20, WEDNESDAY=3]

entries.remove(Map.entry(DayOfWeek.MONDAY, 1));
System.out.println(map); // {TUESDAY=20, WEDNESDAY=3}
System.out.println(entries); // [TUESDAY=20, WEDNESDAY=3]

for (final var entry : entries) {
    entry.setValue(entry.getValue() * 10);
}

System.out.println(map); // {TUESDAY=200, WEDNESDAY=30}
System.out.println(entries); // [TUESDAY=200, WEDNESDAY=30]

boolean equals (Object o)

将指定对象与此映射进行比较以确定其是否相等。 (机器翻译)

final var map1 = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map1.put(DayOfWeek.MONDAY, 1);
map1.put(DayOfWeek.TUESDAY, 2);

final var map2 = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map2.put(DayOfWeek.MONDAY, 1);
map2.put(DayOfWeek.TUESDAY, 2);

final var map3 = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map3.put(DayOfWeek.MONDAY, 10);
map3.put(DayOfWeek.TUESDAY, 20);

final var map4 = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map4.put(DayOfWeek.FRIDAY, 1);
map4.put(DayOfWeek.SATURDAY, 2);

System.out.println(map1); // {MONDAY=1, TUESDAY=2}
System.out.println(map2); // {MONDAY=1, TUESDAY=2}
System.out.println(map3); // {MONDAY=10, TUESDAY=20}
System.out.println(map4); // {FRIDAY=1, SATURDAY=2}

System.out.println(map1.equals(map2)); // true
System.out.println(map1.equals(map3)); // false
System.out.println(map1.equals(map4)); // false

V get (Object key)

返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

System.out.println(map.get(DayOfWeek.MONDAY)); // 10
System.out.println(map.get(DayOfWeek.TUESDAY)); // 20
System.out.println(map.get(DayOfWeek.WEDNESDAY)); // 30
System.out.println(map.get(DayOfWeek.THURSDAY)); // null

int hashCode ()

返回此映射的哈希码值。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);
map.put(DayOfWeek.MONDAY, 1);
map.put(DayOfWeek.TUESDAY, 2);

System.out.println(map); // {MONDAY=1, TUESDAY=2}
System.out.println(map.hashCode()); // 2075746216
final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);

System.out.println(map); // {MONDAY=10, TUESDAY=20}
System.out.println(map.hashCode()); // 2075746219
final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.FRIDAY, 1);
map.put(DayOfWeek.SATURDAY, 2);

System.out.println(map); // {FRIDAY=1, SATURDAY=2}
System.out.println(map.hashCode()); // -1797384182

Set<K> keySet ()

返回此映射中包含的键的 Set 视图。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

final var keys = map.keySet();
System.out.println(keys); // [MONDAY, TUESDAY, WEDNESDAY]

map.put(DayOfWeek.THURSDAY, 40);
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30, THURSDAY=40}
System.out.println(keys); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY]

keys.remove(DayOfWeek.MONDAY);
System.out.println(map); // {TUESDAY=20, WEDNESDAY=30, THURSDAY=40}
System.out.println(keys); // [TUESDAY, WEDNESDAY, THURSDAY]

V put (K key, V value)

将指定的值与此映射中的指定键关联。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);
System.out.println(map); // {}

System.out.println(map.put(DayOfWeek.MONDAY, 10)); // null
System.out.println(map); // {MONDAY=10}

System.out.println(map.put(DayOfWeek.TUESDAY, 20)); // null
System.out.println(map); // {MONDAY=10, TUESDAY=20}

System.out.println(map.put(DayOfWeek.WEDNESDAY, 30)); // null
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

System.out.println(map.put(DayOfWeek.MONDAY, 999)); // 10
System.out.println(map); // {MONDAY=999, TUESDAY=20, WEDNESDAY=30}

void putAll (Map<? extends K,? extends V> m)

将指定映射中的所有映射复制到此映射。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);
System.out.println(map); // {}

map.putAll(Map.of());
System.out.println(map); // {}

final var m1 = Map.of(DayOfWeek.MONDAY, 10);
map.putAll(m1);
System.out.println(map); // {MONDAY=10}

final var m2 = Map.of(DayOfWeek.TUESDAY, 20, DayOfWeek.WEDNESDAY, 30);
map.putAll(m2);
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

final var m3 = Map.of(DayOfWeek.MONDAY, 910, DayOfWeek.TUESDAY, 920);
map.putAll(m3);
System.out.println(map);  // {MONDAY=910, TUESDAY=920, WEDNESDAY=30}

V remove (Object key)

如果存在,则从此映射中删除此键的映射。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 10);
map.put(DayOfWeek.TUESDAY, 20);
map.put(DayOfWeek.WEDNESDAY, 30);

System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}

System.out.println(map.remove(DayOfWeek.TUESDAY)); // 20
System.out.println(map); // {MONDAY=10, WEDNESDAY=30}

System.out.println(map.remove(DayOfWeek.SUNDAY)); // null
System.out.println(map); // {MONDAY=10, WEDNESDAY=30}

int size ()

返回此映射中的键值映射的数量。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

System.out.println(map); // {}
System.out.println(map.size()); // 0

map.put(DayOfWeek.MONDAY, 10);
System.out.println(map); // {MONDAY=10}
System.out.println(map.size()); // 1

map.put(DayOfWeek.TUESDAY, 20);
System.out.println(map); // {MONDAY=10, TUESDAY=20}
System.out.println(map.size()); // 2

map.put(DayOfWeek.WEDNESDAY, 30);
System.out.println(map); // {MONDAY=10, TUESDAY=20, WEDNESDAY=30}
System.out.println(map.size()); // 3

Collection<V> values ()

返回此映射中包含的值的 Collection 视图。 (机器翻译)

final var map = new EnumMap<DayOfWeek, Integer>(DayOfWeek.class);

map.put(DayOfWeek.MONDAY, 1);
map.put(DayOfWeek.TUESDAY, 2);
map.put(DayOfWeek.WEDNESDAY, 3);

System.out.println(map); // {MONDAY=1, TUESDAY=2, WEDNESDAY=3}

final var values = map.values();
System.out.println(values); // [1, 2, 3]

map.replace(DayOfWeek.TUESDAY, 20);
System.out.println(map); // {MONDAY=1, TUESDAY=20, WEDNESDAY=3}
System.out.println(values); // [1, 20, 3]

values.remove(1);
System.out.println(map); // {TUESDAY=20, WEDNESDAY=3}
System.out.println(values); // [20, 3]

Methods declared in AbstractMap

isEmpty, toString

请参阅下面的链接。

Methods declared in Map

compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll

请参阅下面的链接。


相关文章

To top of page