İki farklı kullanım durumunun kesişimine bakıyorsunuz. mapToInt(…)
'u kullanmak, terminal işleminden önce diğer IntStream
işlemlerini zincirlemenizi sağlar. Tersine, Collectors.summingInt(…)
, diğer toplayıcılarla, örn. groupingBy
toplayıcıda alt koleksiyoncu olarak kullanılır. Bu kullanım durumları için, hangisinin kullanılacağı hakkında bir soru yoktur. Özel durumunuzda, daha fazla işlem zincirlemediğinizde veya kollektörlerle ilk etapta uğraşırken, bu iki yaklaşım arasında temel bir fark yoktur. Yine de, daha okunabilir olanı kullanmak bir noktaya sahiptir. Genellikle, akışta aynı işi yapan önceden tanımlanmış bir işlem olduğunda, bir toplayıcı kullanmazsınız. .reduce(…)
'u kullanabildiğiniz zaman collect(Collectors.reducing(…))
'u kullanmazdınız, değil mi?
Sadece kısa mapToInt(mapFunc).sum()
, aynı zamanda conceptionally ne olur, öncelikle bu int
s özetlemek sonra, bir int
dönüştürmek için normal soldan sağa sıra takip etmektedir. Bu, bu alternatifi .collect(Collectors.summingInt(mapFunc))
üzerinden tercih etmeyi haklı buluyor.
Tamamen benim düşüncem: ikincisi okumak daha kolay. –
Hangi yaklaşımın daha etkili bir kıyaslama olduğunu bilmek istiyorsanız, ancak ikinci yaklaşım okuyucu IMHO için daha nettir. – Flown