source: josm/trunk/src/org/openstreetmap/josm/tools/StreamUtils.java@ 10714

Last change on this file since 10714 was 10638, checked in by Don-vip, 8 years ago

see #11390, fix #13206 - Migrate Function interface to java 8 (patch by michael2402, modified) - gsoc-core

File size: 2.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import java.util.EnumSet;
5import java.util.Iterator;
6import java.util.Set;
7import java.util.Spliterator;
8import java.util.Spliterators;
9import java.util.function.BiConsumer;
10import java.util.function.BinaryOperator;
11import java.util.function.Function;
12import java.util.function.Supplier;
13import java.util.stream.Collector;
14import java.util.stream.Stream;
15import java.util.stream.StreamSupport;
16
17/**
18 * Utility methods for streams.
19 * @author Michael Zangl
20 * @since 10585
21 */
22public final class StreamUtils {
23
24 private static final class HtmlListCollector implements Collector<String, StringBuilder, String> {
25 @Override
26 public Supplier<StringBuilder> supplier() {
27 return StringBuilder::new;
28 }
29
30 @Override
31 public BiConsumer<StringBuilder, String> accumulator() {
32 return (sb, item) -> sb.append("<li>").append(item).append("</li>");
33 }
34
35 @Override
36 public BinaryOperator<StringBuilder> combiner() {
37 return StringBuilder::append;
38 }
39
40 @Override
41 public Function<StringBuilder, String> finisher() {
42 return sb -> "<ul>" + sb.toString() + "</ul>";
43 }
44
45 @Override
46 public Set<Characteristics> characteristics() {
47 return EnumSet.of(Characteristics.CONCURRENT);
48 }
49 }
50
51 /**
52 * Utility class
53 */
54 private StreamUtils() {}
55
56 /**
57 * Convert an iterator to a stream.
58 * @param <T> The element type to iterate over
59 * @param iterator The iterator
60 * @return The stream of for that iterator.
61 */
62 public static <T> Stream<T> toStream(Iterator<? extends T> iterator) {
63 Spliterator<T> spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED);
64 return StreamSupport.stream(spliterator, false);
65 }
66
67 /**
68 * Creates a new Collector that collects the items and returns them as HTML unordered list.
69 * @return The collector.
70 * @since 10638
71 */
72 public static Collector<String, ?, String> toHtmlList() {
73 return new HtmlListCollector();
74 }
75}
Note: See TracBrowser for help on using the repository browser.