Допоміжні методи з прийнятої відповіді не потрібні. Потоки можна використовувати з лямбдами або, як правило, скорочувати, використовуючи Посилання методу . Потоки дозволяють функціональні операції. map()
перетворює елементи та collect(...)
або обертає toArray()
потік назад в масив чи колекцію.
Розмова Венката Субраманіама (відео) пояснює це краще за мене.
1 Перетворити List<String>
наList<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 Перетворити List<String>
вint[]
int[] r2 = l1.stream().mapToInt(Integer::parseInt).toArray();
3 Перетворити String[]
наList<Integer>
String[] a1 = {"4", "5", "6"};
List<Integer> r3 = Stream.of(a1).map(Integer::parseInt).collect(Collectors.toList());
4 Перетворити String[]
вint[]
int[] r4 = Stream.of(a1).mapToInt(Integer::parseInt).toArray();
5 Перетворити String[]
вList<Double>
List<Double> r5 = Stream.of(a1).map(Double::parseDouble).collect(Collectors.toList());
6 (бонус) Перетворити int[]
наString[]
int[] a2 = {7, 8, 9};
String[] r6 = Arrays.stream(a2).mapToObj(Integer::toString).toArray(String[]::new);
Звичайно, можливі багато варіацій.
Також дивіться Ideone версію цих прикладів . Можна натиснути вилку, а потім запустити для запуску у браузері.
Lists.transform()
.