précédent | suivant | table des matières
La classe abstraite AbstractMap définit certaines méthodes de l'interface Map :
public boolean isEmpty(){ return size() == 0; } public boolean containsValue(Object v){ Iterator <Entry<K, V>> i = entrySet().iterator(); if(v == null){ while(i.hasNext()){ Entry<K, V> e = i.next(); if(e.getValue() == null) return true; } }else{ while(i.hasNext()){ Entry<K, V> e = i.next(); if(v.equals(e.getValue())) return true; } return false; }
La méthode containsKey est programmée de la même façon que containsValue, mais sera redéfinie dans les classes dérivées de façon à tenir compte des spécifications de chacune des classes ( arbre binaire, ou table de hachage).
public boolean containsKey(Object k){ Entry<K, V>> i = entrySet().iterator(); if(k == null){ while(i.hasNext()){ Entry<K, V> e = i.next(); if(e.getKey() == null) return true; } }else{ while(i.hasNext()){ Entry<K, V> e = i.next(); if(k.equals(e.getKey())) return true; } return false; } }
La méthode get est également définie de la même façon mais sera redéfinie dans les classes dérivées :
public V get(Object k){ Iterator <Entry<K, V>> i = entrySet().iterator(); if(k == null){ while(i.hasNext()){ Entry<K, V> e = i.next(); if(e.getKey() == null) return e.getValue(); } }else{ while(i.hasNext()){ Entry<K, V> e = i.next(); if(k.equals(e.getKey())) return e.getValue(); } return null; } }
La méthode remove est également définie de la même façon mais sera redéfinie dans les classes dérivées :
public V remove(Object k){
Iterator <Entry<K, V>> i = entrySet().iterator();
if(k == null){
while(i.hasNext()){
Entry<K, V> e = i.next();
if(e.getKey() == null) {
V v = e.getValue(); i.remove(); return v;
}
}
}else{
while(i.hasNext()){
Entry<K, V> e = i.next();
if(k.equals(e.getKey())){ V v = e.getValue(); i.remove(); return v;}
}
}
return null; // la clé n'a pas été trouvée.
}
public void putAll(Map<? extends K, ? extends V> m){
Iterator <? extends Entry<? extends K, ? extends V>> i = m.entrySet().iterator();
while(i.hasNext()){
Entry<? extends K, ? extends V> e = i.next();
put(e.getKey(), e.getValue());
}
}
La méthode toString est définie comme suit :
public String toString( ){ StringBuffer res = new StringBuffer(); res.append("{"); Iterator <Entry<K, V>> i = entrySet().iterator(); while(i.hasNext()){ Entry<K, V> e = i.next(); res.append(e.getKey()); res.append(" = "); res.appends(e.getValue()); if(i.hasNext()) res.append(", "); } res.append("}"); return res.toString(); }