Skip to content

Commit 09552ee

Browse files
committed
Add some Collectors for Java8
1 parent 9e0a6a1 commit 09552ee

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package fj.data;
2+
3+
import java.util.stream.Collector;
4+
5+
public final class Collectors {
6+
7+
private Collectors() {
8+
}
9+
10+
public static <A> Collector<A, List.Buffer<A>, List<A>> toList() {
11+
return Collector.of(
12+
List.Buffer::new,
13+
List.Buffer::snoc,
14+
(acc1, acc2) -> acc1.append(acc2.toList()),
15+
List.Buffer::toList
16+
);
17+
}
18+
19+
public static <A> Collector<A, List.Buffer<A>, Array<A>> toArray() {
20+
return Collector.of(
21+
List.Buffer::new,
22+
List.Buffer::snoc,
23+
(acc1, acc2) -> acc1.append(acc2.toList()),
24+
(buf) -> Array.iterableArray(buf.toList())
25+
);
26+
}
27+
28+
public static <A> Collector<A, List.Buffer<A>, Stream<A>> toStream() {
29+
return Collector.of(
30+
List.Buffer::new,
31+
List.Buffer::snoc,
32+
(acc1, acc2) -> acc1.append(acc2.toList()),
33+
(buf) -> Stream.iterableStream(buf.toList())
34+
);
35+
}
36+
}

0 commit comments

Comments
 (0)