précédent | suivant | table des matières

AbstractMap

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

haut de la page