Neden Java Koleksiyonlar API'sının farklı koleksiyon türlerinde kullanışlı map
yöntemlerini içermediğini merak ediyorum.Java koleksiyonları neden uygun bir harita yöntemi sunmuyor?
List<Foo> list = ...;
List<String> result = list.stream().map(Foo::toString).collect(toList());
bu varsayılan yöntemi de uygulayan kadar kolay olmaz:
List<Foo> list = ...;
List<String> result = list.map(Foo::toString);
Bunun yerine bu gibi bir akış oluşturmak harita ve toplamak zorunda: Ben böyle bir şey yazmak istiyorum java.util.List arabirimi? Örneğin.
default <R> List<R> map(Function<E, R> mapper){
return stream().map(mapper).collect(Collectors.toList());
}
İlk bakışta, diğer kolaylıklar yöntemleri yürürlükte gibi görünüyor. Örneğin:
list.stream().forEach(x -> {});
Ancak, karşılaştırma iyi değil
list.forEach(x -> {});
olarak yazılabilir. Iteratable.forEach, üst düzey arayüzde varsayılan bir yöntemdir ve bir dönüş türü belirtmenize gerek yoktur. Davlumbazın altında bir akış oluşturmuyor, daha çok Iteratables özelliklerini kullanarak ... tüm öğeleri yinelemek.
Soru şu şekilde kalıyor: Neden her bir Koleksiyonlar API arabiriminde bir harita yöntemi yok? Belki de yeterince esnek olmadığından, dönüş türüne karar vermeniz gerekecek?
Uygulayıcıların bunun hakkında düşündüğünden ve nedenleri yerleştirmemeleri için nedenleri olduğundan eminim. Ve nedenini anlamak isterim.
Sadece dört gün önce: ([ “? o' forEach' olduğunda neden 'list 'bir' map' varsayılan yöntemi yoktur”] http://stackoverflow.com/q/42364761/2711488) – Holger