ли это должно быть вложенным самостоятельно ссылаться?
Нет, это говорит только о том, что все, а Map
возвращается как результат этого метода должен быть экземпляром объекта, который подчиняется интерфейс Set
, который отражает содержание записей этого Map
«s. То же самое с .keySet()
.
Это имеет смысл, что оба Set
s, так как записи в Map
являются уникальными (as a result of the defined contract for Map.Entry
's .equals()
/.hashCode()
), и поэтому ключи (но для ключей, вы ответственны за обеспечение того, чтобы .equals()
/.hashCode()
соблюдается).
ОДНАКО, вы должны быть осторожны. Для обоих этих методов javadoc говорит:
Набор поддерживается картой, поэтому изменения на карте отражаются в наборе и наоборот.
И это может вызвать проблемы, если вы не будете осторожны.
Посмотрите на этот пример:
public static void main(final String... args)
{
final Map<String, String> map = new HashMap<>();
map.put("hello", "world");
map.put("foo", "bar");
// Create a map entry
final Map.Entry<String, String> entry
= new AbstractMap.SimpleEntry<>("foo", "bar");
// Remove it from the set
map.entrySet().remove(entry);
System.out.println("after removing entry: " + map);
// Remove a key
map.keySet().remove("hello");
System.out.println("after removing key: " + map);
}
Результат:
after removing entry: {hello=world}
after removing key: {}
Добро пожаловать в Stackoverflow. Надеюсь, вам понравилось изучать Java, но, пожалуйста, обратитесь к FAQ http://stackoverflow.com/help/on-topic, прежде чем спрашивать –
, спасибо, я буду следить за правилом. –