/** * Gets a keySet view of the map. * Changes made on the view are reflected in the map. * The set supports remove and clear but not add. * * @return the keySet view */ @Override public Set<K> keySet() { if (keySet == null) { keySet = new KeySet<>(this); } return keySet; }