16 Ekim 2019 Çarşamba

Streams Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.google.common.collect.Streams;
findLast metodu
İmzası şöyle.
public static <T> java.util.Optional<T> findLast(Stream<T> stream);
Örnek
Şöyle yaparız.
Stream<T> stream = ...;
Optional<T> lastItem = Streams.findLast(stream);
forEachPair metodu
Eşit uzunluktaki iki stream'in her elemanını çiftler halinde dolaşabilmeyi sağlar.
Örnek
Şöyle yaparız
String x[] = {"a", "b"};
String y[] = {"c", "d"};

var data = new HashMap<String, String>();

Streams.forEachPair(Arrays.stream(x), Arrays.stream(y), data::put);

System.out.println(data); // {a=c, b=d}
mapWithIndex metodu
Şöyle yaparız.
Streams.mapWithIndex(
    Stream.of("a", "b", "c"),
    (str, index) -> str + ":" + index)
) // will return Stream.of("a:0", "b:1", "c:2")
stream metodu
Iteraror'den stream elde etmek için kullanılır. Metodun içi şöyle.
public static <T> Stream<T> stream(Iterator<T> iterator) {
  return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
}
Örnek
Şöyle yaparız.
 Stream<MyItem> myItemStream = Streams.stream(myItemIterator);
zip metodu
Yeni bir stream döndürür. Bu stream eşit uzunluktaki iki stream'in her elemanını çiftler halinde dolaşabilmeyi sağlar.
Örnek
Şöyle yaparız
String x[] = {"a", "b"};
String y[] = {"c", "d"};

var data = new HashMap<String, String>();

var myStream = Streams.zip(Arrays.stream(x), Arrays.stream(y),
                (arg1, arg2) -> ...;
Örnek
Şöyle yaparız.
String[] a = {"Apple", "Samsung", "LG", "Oppo", "Apple", "Huawei", "Oppo"};
Stream<String> items = Stream.of(a).sorted().distinct();
Stream<Integer> indices = Stream.iterate(1, i -> i + 1);
Streams.zip(items, indices, 
  (item, index) -> index + ". " + item)
  .forEach(System.out::println);
Çıktı olarak şunu alırız.
1. Apple
2. Huawei
3. LG
4. Oppo
5. Samsung


Hiç yorum yok:

Yorum Gönder