0

以下は私の学習目標です。私はそれを始めましたが、メインでプログラムを実装するためにここからどこへ行くべきかよくわかりません。助けていただければ幸いです!

目的:

  • カード コレクションに Iterator オブジェクトを追加する
  • 反復子は、プライベート 内部クラスを作成することによってコレクションに追加されます。
  • 適切な内部クラス型のいずれかを使用できます
  • 列挙子と反復子は、コレクションがいつ変更されるかを判断するために多数を使用します。
  • 正しいメソッド、インターフェースを実装し、Java API と一致するクラスの適切なクラスを拡張します。

    public class CardCollection {
    
    private ArrayList<Card> cards;
    private ArrayList<Note> notes;
    
    public CardCollection() { //constructor initializes the two arraylists
      cards = new ArrayList<Card>();
      notes = new ArrayList<Note>();
     }
    
    private class Card implements Iterable<Card> { //create the inner class
    
        public Iterator<Card> iterator() { //create the Iterator for Card
            return cards.iterator();
        }
    }
    
    private class Note implements Iterable<Note> { //create the inner class
    
        public Iterator<Note> iterator() { //create the Iterator for Note
            return notes.iterator();
        }
    
    }
    
    public Card cards() {
        return new Card();
     }
    
     public Note notes() {
         return new Note();
     }
    
     public void add(Card card) {
         cards.add(card);
     }
    
     public void add(Note note) {
         notes.add(note);
     }
    
    }
    
4

2 に答える 2

2

ここには、混同している可能性があると思われる 2 つの概念があります。一部の内部要素を反復処理できる場合は Iterable のオブジェクト。

そのため、アイテムが入ったショッピング カートがあれば、食料品を反復処理できます。

public class ShoppingCart implements Iterable<GroceryItem>
{
   public Iterator<GroceryItem> iterator()
   {
      // return an iterator
   }
}

したがって、この機能を使用するには、Iterator を提供する必要があります。コード例では、ArrayList の反復子を再利用しています。演習の説明から、自分で実装する必要があると思います。例えば:

public class GroceryIterator implements Iterator<GroceryItem>
{
  private GroceryItem[] items;
  private int currentElement = 0;

  public GroceryIterator(GroceryItem[] items)
  {
    this.items = items;
  }

  public GroceryItem next() // implement this
  public void remove() // implement this
  public boolean hasNext() // implement this
}

それで、コンストラクター/メンバー変数を使用してヒントを提供しました。このクラスを作成すると、Iterable クラス (私の ShoppingCart) は新しいイテレータを返します。

割り当てでは、カスタム Iterator にプライベート 内部クラスを使用することをお勧めします。

幸運を

于 2012-07-09T21:10:19.740 に答える
1
  • 反復可能なオブジェクトは通常、コレクションです。これは、CardよりもCardCollectionの方が適しています
  • パブリックメソッドcards()とnotes()は、プライベートタイプのCardとNoteを返します。それらは公開されることを意図していると思います。
  • メソッドcards()とnotes()は、イテレータを返すことを目的としていると思います。
于 2012-07-09T20:54:36.357 に答える