マップ インターフェイスで
  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返します。しかし、値は です。これらは一意ではないため、 に入れることはできません。SetONE, TWOTEST, TESTSet