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();
}