Enlaces Rotem:
Me estoy poniendo en práctica un método putAll (). Traté de recorrer el mapa utilizando entrySet y iterador métodos, pero recibió un error de compilación que m.entrySet().iterator()
el valor de retorno No se pudo convertir a Iterator<Entry<? extends K, ? extends V>>
. ¿por qué? si el mapa es de ese tipo, es iterador debería ser así, ¿no?
¡gracias! no se compila:
@Override
public void putAll(Map<? extends K, ? extends V> m) {
Iterator<Entry<? extends K, ? extends V>> iter = m.entrySet().iterator();
while (iter.hasNext()) {
Entry<? extends K, ? extends V> entry = iter.next();
put(entry.getKey(), entry.getValue());
}
}
compila y funciona bien:
@Override
public void putAll(Map<? extends K, ? extends V> m) {
Objects.requireNonNull(m, "putAll(): argument is null");
for (Entry<? extends K, ? extends V> entry : m.entrySet()) {
put(entry.getKey(), entry.getValue());
}
}
Lino:
Cambio
Iterator<Entry<? extends K, ? extends V>> iter
A
Iterator<? extends Entry<? extends K, ? extends V>> iter