Kabul edilen cevaptan yardımcı yöntemlere ihtiyaç yoktur. Akışlar lambdalarla kullanılabilir veya genellikle Yöntem Referansları kullanılarak kısaltılabilir . Akışlar, işlevsel işlemleri mümkün kılar. map()
öğeleri dönüştürür ve collect(...)
veya toArray()
akışı bir dizi veya koleksiyona geri sarar.
Venkat Subramaniam'ın konuşması (video) bunu benden daha iyi açıklıyor.
1 dönüştürme List<String>
içinList<Integer>
List<String> l1 = Arrays.asList("1", "2", "3");
List<Integer> r1 = l1.stream().map(Integer::parseInt).collect(Collectors.toList());
// the longer full lambda version:
List<Integer> r1 = l1.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList());
2 dönüştürme List<String>
içinint[]
int[] r2 = l1.stream().mapToInt(Integer::parseInt).toArray();
3 dönüştürme String[]
içinList<Integer>
String[] a1 = {"4", "5", "6"};
List<Integer> r3 = Stream.of(a1).map(Integer::parseInt).collect(Collectors.toList());
4 dönüştürme String[]
içinint[]
int[] r4 = Stream.of(a1).mapToInt(Integer::parseInt).toArray();
5 dönüştürme String[]
içinList<Double>
List<Double> r5 = Stream.of(a1).map(Double::parseDouble).collect(Collectors.toList());
6 (Bonus) dönüştürme int[]
içinString[]
int[] a2 = {7, 8, 9};
String[] r6 = Arrays.stream(a2).mapToObj(Integer::toString).toArray(String[]::new);
Elbette çok daha fazla varyasyon mümkündür.
Ayrıca bu örneklerin Ideone versiyonuna bakın . Çatalı tıklayabilir ve ardından tarayıcıda çalıştırmak için çalıştırabilir.
Lists.transform()
.