Partage
  • Partager sur Facebook
  • Partager sur Twitter

redefinir iterator

Sujet résolu
    13 novembre 2017 à 21:53:00

    Bonjour j'ai une class B qui etends AbstractQueue<E> et je dois donc refaire la methode iterator mais je ne sais pas trop comment la faire.

    public class B<E> extends AbstractQueue<E>{
     private E[] tableau;
     ...
     public Iterator<E> iterator(){
    
     }
    
    
    }

    Sachant que je ne peut pas faire Arrays.asList(tableau) puisque mon tableau n'est pas forcement rempli a sa capacité maximale et donc il peut y avoir des null.

    Merci

    -
    Edité par camilla8 13 novembre 2017 à 21:55:32

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2017 à 0:55:41

      Salut, pourquoi utiliser un tableau si tu veux quelque chose de taille variable ? 

      Et pour ta méthode "iterator()" selon l'api java: "Returns an iterator over the elements contained in this collection."

      donc en gros tu dois renvoyer un nouvel objet qui implémente l'interface "Iterator<E>" et donc qui redéfinie les méthodes "hasNext()", "next()" et "remove()" en fonction de ta nouvelle classe.

      un exemple trouvé sur stackOverflow:

      @Override
          public Iterator<Type> iterator() {
              Iterator<Type> it = new Iterator<Type>() {
      
                  private int currentIndex = 0;
      
                  @Override
                  public boolean hasNext() {
                      return currentIndex < currentSize && arrayList[currentIndex] != null;
                  }
      
                  @Override
                  public Type next() {
                      return arrayList[currentIndex++];
                  }
      
                  @Override
                  public void remove() {
                      throw new UnsupportedOperationException();
                  }
              };
              return it;
          }

      le lien pour la discussion sur cet exemple 

      -
      Edité par Splintz 14 novembre 2017 à 0:57:50

      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2017 à 10:12:28

        Mais je ne vaut pas d'arraylist, je veut un tableau qui a une capacité maximale et que je peut remplir.
        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2017 à 17:51:27

          Tu fais bien comme tu veux, mais je comprends pas le choix du tableau.

          Pourquoi faire hérité de "AbstractQueue" pour un tableau ? Pourquoi avoir essayé  "Arrays.asList(tableau)" si tu ne veux pas de liste ? je suis désolé mais je comprends pas ce que tu veux.

           Créer juste un tableau que tu remplit. 

          -
          Edité par Splintz 14 novembre 2017 à 17:53:22

          • Partager sur Facebook
          • Partager sur Twitter

          redefinir iterator

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown