マップ インターフェイスで
Collection<V> values();
entrySet()
この関数がand と同様に Set を返さないのはなぜkeySet()
ですか?
ありがとう。
マップ インターフェイスで
Collection<V> values();
entrySet()
この関数がand と同様に Set を返さないのはなぜkeySet()
ですか?
ありがとう。
マップのキーセットはセットですが、値はコレクションです。
public interface Map<K,V> {
// Basic operations
V put(K key, V value);
V get(Object key);
V remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
// Bulk operations
void putAll(Map<? extends K, ? extends V> m);
void clear();
// Collection Views
public Set<K> keySet();
public Collection<V> values();
そして、なぜキーセットがセットであり、値がコレクションであるかについては、ここに答えがあります:
values — マップに含まれる値のコレクション。複数のキーが同じ値にマップされる可能性があるため、この Collection は Set ではありません。
にMap
は一意のキー セットがあり、各キーは値にマップされます。
ASet
には一意の値のセットが含まれています。契約により、重複を含めることはできません。
それでは、Map
次のようなa から始めましょう。
final Map<String, String> map = new HashMap<>();
map.put("ONE", "TEST");
map.put("TWO", "TEST");
したがって、は の aをkeySet
返します。しかし、値は です。これらは一意ではないため、 に入れることはできません。Set
ONE, TWO
TEST, TEST
Set