3 Temmuz 2019 Çarşamba

Iterable Arayüzü

Giriş
Her Collection bu arayüzden kalıtır. Örneğin Set arayüzü Iterable'dan kalıtır. 
public interface Set<E> extends Collection<E> {
}
Kalıtmayan bir veri yapısı ise Map arayüzü. Neden böyle olduğunun açıklaması burada. Dolayısıyla Map arayüzünden iterator ve spliterator metodları yok.
public interface Map<K, V> {

  default void forEach(BiConsumer<? super K, ? super V> action) {
    ...
  }
}
Bazı geliştiriciler kendi Map sınıflarının Iterable'dan kalıtmasını tercih etmişler. Örneğin Hazelcast IMap arayüzü. Kodu şöyle
public interface IMap<K, V> extends 
  ConcurrentMap<K, V>, BaseMap<K, V>, Iterable<Map.Entry<K, V>> {
  ...
}
Kendi Sınıfımız
Eğer kendi sınıfımız bu arayüzden kalıtırsa Java'daki for döngüsü ile kullanılabilir. Açıklaması şöyle.
The CustomList class implements Iterable, which allows us to use "for" with the list.
Örnek
Şöyle yaparız.
public class CustomList<T> implements Iterable<T> {
  ...
}
forEach metodu
Çoğu Collection aynı zamanda Iterable olduğu için
list.forEach (...) şeklinde yapılabilir.

iterator metodu
Örnek ver

spliterator metodu
Spliterator nesnesi döner

Hiç yorum yok:

Yorum Gönder