Реализуете такой итератор? - PullRequest
0 голосов
/ 26 марта 2012

У меня есть список (ArrayList, в действительности) типа HColumn<ColName, ColValue>. Теперь я хочу реализовать iterator(), который перебирает эту коллекцию так, чтобы при переборах он выдавал соответствующие ColValue от каждого HColumn.

Этот объект HColumn<ColName, ColValue> определен во внешней библиотеке, используемой моим Java-приложением.

Как я могу это сделать, если это возможно?

В настоящее время, чтобы создать такую ​​итерацию, я в целом создавал новый список, содержащий соответствующий ColValues, что, я думаю, не очень хорошая вещь с точки зрения производительности и эффективности.

1 Ответ

4 голосов
/ 26 марта 2012

По предложению @jordeu:

public class IteratorColValueDecorator implements Iterator<ColValue> {
      private Iterator<HColumn<ColName, ColValue>> original;
      //constructor taking the original iterator
      public ColValue next() {
           return original.next().getValue();
      }
      //others simply delegating
}

Или, мое оригинальное предложение:

public class ColValueIterator implements Iterator<ColValue> {
    private List<HColumn<ColName, ColValue>> backingList;
    //constructor taking List<...>
    int currentIndex = 0;
    public ColValue next() {
        return backingList.get(currentIndex++).getColumn();
    }
    //hasNext() implemented by comparing the currentIndex to backingList.size();
    //remove() may throw UnsupportedOperationException(), 
    //or you can remove the current element
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...