Bonjour,
Je vois que dans le test unitaire, l'appel sur l'iterator de Topic de la methode remove() doit generer une exception mais je ne comprend pas bien pourquoi dans le cas presenté iterator devrait generer une exception. Faut-il creer une classe Iterator<Topic> dans laquelle il faut reecrire la methode remove() pour que son comportement colle au test unitaire ?
Iterator<Topic> iterator() exception attendu lors du remove()
Re: Iterator<Topic> iterator() exception attendu lors du remove()
Bonsoir,
regardez dans l'énoncé, l'itérateur permet de retirer un élément, il faut donc redéfinir remove et lever une exception
Bon travail
regardez dans l'énoncé, l'itérateur permet de retirer un élément, il faut donc redéfinir remove et lever une exception
Bon travail
Code : Tout sélectionner
/** Parcours du médiateur, sans retrait possible.
* L'appel de remove lève une exception de type RuntimeException
* @return un itérateur par les thèmes présents
*/
public Iterator<Topic> iterator();
Re: Iterator<Topic> iterator() exception attendu lors du remove()
Merci pour votre réponse, j'ai redefini les methode de Iterator de la maniere suivante :
public Iterator<Topic> iterator(){
return new Iterator<Topic>() {
private int j=0;
private boolean trouvé, terminé;
public boolean hasNext() {
while (j<subscribers.size() && subscribers.get(j) == null) j++;
if(j<subscribers.size()){
trouvé = true;
return trouvé;
} else {
trouvé = false;
terminé = true;
return false;
}
}
@Override
public Topic next() {
if (terminé) throw new NoSuchElementException();
if (trouvé || hasNext()) {
Topic suivant = subscribers.get(j).getTopic();
j++;
return suivant;
} else throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public Iterator<Topic> iterator(){
return new Iterator<Topic>() {
private int j=0;
private boolean trouvé, terminé;
public boolean hasNext() {
while (j<subscribers.size() && subscribers.get(j) == null) j++;
if(j<subscribers.size()){
trouvé = true;
return trouvé;
} else {
trouvé = false;
terminé = true;
return false;
}
}
@Override
public Topic next() {
if (terminé) throw new NoSuchElementException();
if (trouvé || hasNext()) {
Topic suivant = subscribers.get(j).getTopic();
j++;
return suivant;
} else throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
Re: Iterator<Topic> iterator() exception attendu lors du remove()
Bonsoir, ou bien en se servant de l'iterateur de la liste, les méthodes sont identiques sauf remove. Cela vous affranchit des contraintes sur l'utilisation d'un iterateur.
Bonne itération
Bonne itération
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité