20 Mayıs 2018 Pazar

Iterator Arayüzü

Giriş
C++'ta bir çok iterator şöyledir.
In C++, we have end() where the iterator ends up at the position one past the last element
Bellekte şöyledir.
Blue Green Purple
  ^    ^     ^    ^
begin            end
Bu arayüz C++'taki gibi belirli bir bellek modeli sunmaz.

Tanımlama
Şöyle yaparız
java.util.Iterator<E>;
forEachRemaining metodu
Açıklaması şöyle.
Performs the given action for each remaining element until all elements have been processed or the action throws an exception. Actions are performed in the order of iteration, if that order is specified. Exceptions thrown by the action are relayed to the caller.
Örnek
Şöyle yaparız. Döngüden çıkmak için exception fırlatmak gerekir. return yeterli değildir.
List<String> names = new ArrayList<>();
names.add("A");
names.add("B");
names.add("C");
ListIterator<String> nameIterator = names.listIterator();
nameIterator.forEachRemaining(name -> {
  if (name.equals("B")) {
    System.out.println("Found");
    return;
  }
  System.out.println(name);
});
hasNext metodu
E tipinin String olduğunu varsayarsak şöyle yaparız.
while (iterator.hasNext()) {
  String color = iterator.next();
}
next metodu
Şöyle yaparız.
class SkippingIterator<T> implements Iterator<T> {
  private List<T> list;
  private currentPosition;
  private int skipBy;
  public SkippingIterator(List<T> l) {
    this(l, 2);
  }
  public SkippingIterator(List<T> l, int skip) {
    this(l, skipBy, 0);
  }
  public SkippingIterator(List<T> l, int skip, int startPosition) {
    list = l;
    skipBy = skip;
    currentPosition = startPosition;
  }
  public boolean hasNext() {
    return currentPosition < list.size();
  }
  public T next() {
    T result = list.get(currentPosition);
    currentPosition += skip;
    return result;
  }
}

remove metodu
Örnek ver

Hiç yorum yok:

Yorum Gönder