Term
|
Definition
template class ListIterator : public Iterator {
public:ListIterator(const List* aList); virtual void First(); virtual void Next(); } |
|
|
Term
Imprime o nome de todos os membros com um loop for-each: |
|
Definition
for (Person p : roster) { System.out.println(p.getName()); } |
|
|
Term
Imprime o nome de todos os com o forEach operação de agregação: |
|
Definition
roster.stream().forEach(e->System.out.println(e.getName()); |
|
|
Term
|
Definition
template class FilteringListTraverser { public: FilteringListTraverser(List* aList); bool Traverse(); protected: virtual bool ProcessItem(const Item&) = 0;
} |
|
|
Term
Toda a lógica iteração pode ser reutilizado. |
|
Definition
ListIterator i(employees); int count = 0; for (i.First(); !i.IsDone(); i.Next()) { count++; i.CurrentItem()->Print(); if (count >= 10) { break; } } |
|
|
Term
Imprimir todos os dados independente de uma representação concreta |
|
Definition
AbstractList*>* employees; // ... Iterator*>* iterator = employees->CreateIterator(); PrintEmployees(*iterator); delete iterator; |
|
|
Term
Retornar um objeto ListIterator |
|
Definition
template Iterator*>* List::CreateIterator () const { return new ListIterator(this); } |
|
|
Term
|
Definition
template void ListIterator::Next () { _current++; } |
|
|
Term
Posiciona o iterador para o primeiro elemento |
|
Definition
template void ListIterator::First () { _current = 0; } |
|
|
Term
Habilitar iteração polimórfica, AbstractList |
|
Definition
template class AbstractList { public: virtual Iterator* CreateIterator() const = 0; // ... } |
|
|
Term
Criar um vetor e adicionar alguns itens |
|
Definition
public static void main(String args[]) { Vector v = new Vector(); v.addElement(new Integer(5)); v.addElement(new Integer(9)); v.addElement(new String("Hi, There!"));
} |
|
|
Term
Exemplo onde iterador externo é usado |
|
Definition
for (Iterator it = options.iterator(); it.hasNext(); { String name = (String)it.next(); System.out.println(name); } Iterator name = options.iterator(); while (name.hasNext() ){ System.out.println(name.next() ); } for (Object item : options) System.out.println(((String)item)); |
|
|
Term
Evitando compromisso com a implementação da lista específica. |
|
Definition
SkipList* employees; // ... SkipListIterator iterator(employees); PrintEmployees(iterator); template class AbstractList { public virtual Iterator* CreateIterator() const = 0; // ... } template Iterator* List::CreateIterator () const { return new ListIterator(this); } |
|
|
Term
Calcular a média de idade de todos os membros armazenados em uma estrutura de dados |
|
Definition
double average = roster.stream().filter(p >p.getGender()==Person.Sex.MALE).mapToInt(Person::getAge) .average() .getAsDouble(); |
|
|
Term
|
Definition
public interface Iterator { boolean hasNext(); E next(); void remove(); //optional } |
|
|
Term
Remoção de elementos específicos. |
|
Definition
static void filter(Collection c) { for (Iterator it = c.iterator(); it.hasNext(); ) if (!cond(it.next())) it.remove(); } |
|
|
Term
Encapsular diferentes tipos de iteração |
|
Definition
template class FilteringListTraverser { public: FilteringListTraverser(List* aList); bool Traverse(); protected: virtual bool ProcessItem(const Item&) = 0; virtual bool TestItem(const Item&) = 0; private: ListIterator _iterator; } template void FilteringListTraverser::Traverse () { bool result = false; for ( _iterator.First(); !_iterator.IsDone(); _iterator.Next() ) { if (TestItem(_iterator.CurrentItem())) { result = ProcessItem(_iterator.CurrentItem()); if (result == false) { break; } } } return result;
} |
|
|
Term
Lista e Iterator interfaces. |
|
Definition
template class List { public: List(long size = DEFAULT_LIST_CAPACITY); long Count() const; Item& Get(long index) const; // ... } template class Iterator { public: virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() const = 0; virtual Item CurrentItem() const = 0; protected: Iterator(); } |
|
|
Term
Usando iterators para tornar a impressão mais fácil |
|
Definition
Void PrintEmployees (Iterator& i){
for(i.First(); !i.IsDone(); i.Next()){
i.CurrentItem()->Print(); } } |
|
|
Term
Certificando-se iterators são apagados |
|
Definition
template class IteratorPtr { public: IteratorPtr(Iterator* i): _i(i) { } ~IteratorPtr() {delete _i; } Iterator* operator->() { return _i; } Iterator& operator*() { return *_i; } private: IteratorPtr(const IteratorPtr&); IteratorPtr& operator=(const IteratorPtr&); private: Iterator* _i; } AbstractList* employees; // ...
IteratorPtr iterator(employees->CreateIterator()); PrintEmployees(*iterator); |
|
|