public class ListeAdtArraylistImpl<T> implements ListeAdt<T> {
private ArrayList<T> listeAdt;
private Iterator<T> iterateur;
public ListeAdtArraylistImpl() {
listeAdt = new ArrayList<T>();
iterateur = listeAdt.iterator();
}
public T[] ajouter(ListeAdt<T> liste) {
ArrayList<T> listElementNonAjoute = new ArrayList<T>();
while (liste.existeProchainElement() && liste != null) {
T elementCourant = liste.prochainElement();
if (liste.estElements(elementCourant)) {
ajouter(elementCourant);
} else {
listElementNonAjoute.add(elementCourant);
}
}
return (T[]) listElementNonAjoute.toArray();
}
public boolean estElements(T element) {
for (T elementExiste : listeAdt) {
if (elementExiste.equals(element)) {
return true;
}
}
return false;
}
public T prochainElement() {
return listeAdt.iterator().hasNext();
}
c'est mon main
ListeAdtArraylistImpl<String> listAAJouter = new ListeAdtArraylistImpl<String>();
listAAJouter.ajouter("L");
listAAJouter.ajouter("i");
listAAJouter.ajouter("s");
listAAJouter.ajouter("t");
le problème c est que mon iterateur se bloque sur le premier élément "L" ça fait deux jour que j'essaye de trouver une autre piste mais je n'arrive pas
[b]Note je n'ai pas le droit d'utiliser autres structures que ListAdtArrayList, aussi je dois faire usage aux méthodes que moi même j'ai développer c-à-d estElement(T element); prochainElement(); ajouter(T element); pour développer la méthode ajouter(listeAdt<T> liste);
si vous avez une autre piste ça va beaucoup m'aider
Merci d'avance/b
voici la solution que j ai pu trouver grâce a vos éclaircissement, si vous voyez une façon plus optimiser pour faire bienvenue a toute autres suggestions
public class ListeAdtArraylistImpl<T> implements ListeAdt<T> {
private ArrayList<T> listeAdt;
private Iterator<T> iterateur;
public ListeAdtArraylistImpl() {
listeAdt = new ArrayList<T>();
iterateur = listeAdt.iterator();
}
public T[] ajouter(ListeAdt<T> liste) {
ArrayList<T> listeElementNonAjoute = new ArrayList<T>();
ArrayList<T> listeElementAjoute = new ArrayList<T>();
for (T element : listeAdt) {
if (liste.estElements(element)) {
listeElementNonAjoute.add(element);
} else {
listeElementAjoute.add(element);
}
}
for (T t : listeElementAjoute) {
liste.ajouter(t);
}
return (T[]) listeElementNonAjoute.toArray();
}
public T prochainElement() {
return listeAdt.iterator().next();
}
je l'ai tester est ça marche, pour si quelqu'un trouveras un jour le même problème au moins ça va donner une piste.
Ton code est truffé d'erreurs, manifestement, tu n'utilises pas d'ide qui ne te laisserait pas passer ce genre de choses.
Rien que pour la fonction prochainElement, tu commet de nombreuses erreurs, la fonction hasNext retourne un booleen et pas un objet de type T. En plus, tu créé un nouvel itérateur systématiquement en utilisant .iterator(). Normal que ton code bloque au premier element, il faut que tu utilises ta variable iterateur.