T - ã¹ããªãŒã èŠçŽ ã®åpublic interface Stream<T> extends BaseStream<T,Stream<T>>
StreamãšIntStreamã䜿çšããéèšæäœã瀺ãããã®ã§ãã
int sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToInt(w -> w.getWeight())
.sum();
ãã®äŸã§ã¯ãwidgetsã¯Collection<Widget>ã§ãã Collection.stream()çµç±ã§Widgetãªããžã§ã¯ãã®ã¹ããªãŒã ãäœæããããã®çµæããã£ã«ã¿ãªã³ã°ãããŠèµ€è²ã®ãŠã£ãžã§ããã®ã¿ãå«ãã¹ããªãŒã ãçæãããåŸãããããåèµ€è²ãŠã£ãžã§ããã®ééã衚ãintå€ã®ã¹ããªãŒã ã«å€æãããŸãã ç¶ããŠãã®ã¹ããªãŒã ãåèšãããåèšééãçæãããŸãã
ãªããžã§ã¯ãåç
§ã®ã¹ããªãŒã ã§ããStreamã®ã»ãã«ãIntStreamãLongStreamããã³DoubleStreamçšã®ããªããã£ãç¹æ®åãååšããŠããããããããã¹ãŠã¹ããªãŒã ãšåŒã°ããããã§èšè¿°ããç¹æ§ãå¶éã«æºæ ããŸãã
èšç®ãå®è¡ã§ããããã«ãè€æ°ã®ã¹ããªãŒã æäœãçµã¿åãããŠ1ã€ã®ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã圢æãããŸãã ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã¯ã1ã€ã®ãœãŒã¹(é
åãã³ã¬ã¯ã·ã§ã³ããžã§ãã¬ãŒã¿é¢æ°ãå
¥åºåãã£ãã«ãªã©)ã0å以äžã®äžéæäœ(filter(Predicate)ãªã©ãããã¹ããªãŒã ãå¥ã®ã¹ããªãŒã ã«å€æããæäœ)ããã³1ã€ã®çµç«¯æäœ(count()ãforEach(Consumer)ãªã©ãçµæãŸãã¯å¯äœçšãçæããæäœ)ããæ§æãããŸãã ã¹ããªãŒã ã¯é
å»¶åŠçãããŸãããœãŒã¹ã»ããŒã¿ã«å¯Ÿããèšç®ã¯çµç«¯æäœãèµ·åããããŸã§å®è¡ãããããœãŒã¹èŠçŽ ãå¿
èŠãªã ãããæ¶è²»ãããŸããã
ã³ã¬ã¯ã·ã§ã³ãšã¹ããªãŒã ã¯ã衚é¢äžäŒŒãç¹ããããã®ã®ãç°ãªãç®çãæã£ãŠããŸãã ã³ã¬ã¯ã·ã§ã³ã¯äž»ã«ãèŠçŽ ã®å¹ççãªç®¡çãã¢ã¯ã»ã¹ã«æ³šåããŠããŸãã ããã«å¯Ÿããã¹ããªãŒã ã¯èŠçŽ ã®çŽæ¥ã¢ã¯ã»ã¹ãæäœã®ææ®µãæããã代ããã«ãœãŒã¹ããã®ãœãŒã¹ã«å¯ŸããŠéçŽçã«å®è¡ãããèšç®æäœã宣èšçã«èšè¿°ããããšã«æ³šåããŠããŸãã ãã ããçšæãããã¹ããªãŒã æäœãå¿
èŠãªæ©èœãæäŸããªãå Žåã«ã¯ãBaseStream.iterator()ããã³BaseStream.spliterator()æäœã䜿ã£ãŠå¶åŸ¡ããããã©ããŒãµã«ãå®è¡ããããšãã§ããŸãã
ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã¯ãäžã®ãwidgetsãã®äŸã®ããã«ãã¹ããªãŒã ã»ãœãŒã¹ã«å¯Ÿããååããšã¿ãªãããšãã§ããŸãã ãœãŒã¹ãæç€ºçã«åæå€æŽåãã«èšèšããããã®(ConcurrentHashMapãªã©)ã§ãªãããããã¹ããªãŒã ã®ãœãŒã¹ãç
§äŒäžã«å€æŽãããšãäºæž¬äžå¯èœãªåäœãééã£ãåäœãçºçããå¯èœæ§ããããŸãã
ã»ãšãã©ã®ã¹ããªãŒã æäœã¯ãäžã®äŸã§mapToIntã«æž¡ãããã©ã ãåŒw -> w.getWeight()ã®ãããªããŠãŒã¶ãŒæå®ã®åäœãèšè¿°ãããã©ã¡ãŒã¿ãåãåããŸãã æ£ããåäœãç¶æããã«ã¯ããããã®åäœãã©ã¡ãŒã¿ã¯æ¬¡ãæºããå¿
èŠããããŸãã
ãã®ãããªãã©ã¡ãŒã¿ã¯åžžã«é¢æ°åã€ã³ã¿ãã§ãŒã¹(Functionãªã©)ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããéåžžã¯ã©ã ãåŒãã¡ãœããåç
§ã«ãªããŸãã ç¹ã«æèšãããŠããªããããããããã®ãã©ã¡ãŒã¿ã¯null以å€ã§ãªããã°ãããŸããã
(äžéãŸãã¯çµç«¯ã¹ããªãŒã æäœãåŒã³åºããŠ)ã¹ããªãŒã ãæäœããã®ã¯ãäžåºŠã ãã«ãã¹ãã§ãã ãã®ãããããšãã°åããœãŒã¹ã2ã€ä»¥äžã®ãã€ãã©ã€ã³ã«å¯ŸããŠããŒã¿ãäŸçµŠããããã©ãŒã¯ããããã¹ããªãŒã ããåãã¹ããªãŒã ãè€æ°åãã©ããŒã¹ããããšãªã©ã¯ãçŠæ¢ãããŸãã ã¹ããªãŒã å®è£
ã¯ãã¹ããªãŒã ãåå©çšãããŠããã®ãæ€åºãããšãIllegalStateExceptionãã¹ããŒããŸãã ãã ããäžéšã®ã¹ããªãŒã æäœããã¯æ°ããã¹ããªãŒã ã»ãªããžã§ã¯ãã§ã¯ãªãã¬ã·ãŒããè¿ãããããšããããããå Žåã«ãã£ãŠã¯åå©çšãæ€åºã§ããªãå¯èœæ§ããããŸãã
ã¹ããªãŒã ã¯BaseStream.close()ã¡ãœãããæã¡ãAutoCloseableãå®è£
ããŠããŸãããã»ãšãã©ãã¹ãŠã®ã¹ããªãŒã ã»ã€ã³ã¹ã¿ã³ã¹ã¯ãå®éã«ã¯äœ¿çšåŸã«ã¯ããŒãºããå¿
èŠã¯ãããŸããã äžè¬ã«ãã¯ããŒãºãå¿
èŠã«ãªãã®ã¯ãå
¥åºåãã£ãã«ããœãŒã¹ã«æã€ã¹ããªãŒã (Files.lines(Path, Charset)ããè¿ããããã®ãªã©)ã ãã§ãã 倧éšåã®ã¹ããªãŒã ã®èåŸã«ååšããŠããã®ã¯ãã³ã¬ã¯ã·ã§ã³ãé
åããŸãã¯çæé¢æ°ãªã®ã§ãç¹å¥ãªãªãœãŒã¹ç®¡çãè¡ãå¿
èŠã¯ãããŸããã (ã¯ããŒãºãå¿
èŠãªã¹ããªãŒã ã¯ãtry-with-resourcesæã®ãªãœãŒã¹ãšããŠå®£èšã§ããŸãã)
ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã¯é 次ã䞊åã®ããããã§å®è¡ã§ããŸãã ãã®å®è¡ã¢ãŒãã¯ãã¹ããªãŒã ã®ããããã£ã®1ã€ã§ãã ã¹ããªãŒã ã®äœææã«ã¯ãé æ¬¡å®è¡ãŸãã¯äžŠåå®è¡ã®åæéžæãè¡ãããŸãã (ããšãã°ãCollection.stream()ã§ã¯é 次ã¹ããªãŒã ãäœæãããCollection.parallelStream()ã§ã¯äžŠåã¹ããªãŒã ãäœæãããŸãã) ãã®å®è¡ã¢ãŒãã®éžæã倿Žããã«ã¯BaseStream.sequential()ãŸãã¯BaseStream.parallel()ã¡ãœããã䜿çšããå®è¡ã¢ãŒããç
§äŒããã«ã¯BaseStream.isParallel()ã¡ãœããã䜿çšããŸãã
IntStream, LongStream, DoubleStream, java.util.stream| 修食åãšå | ã€ã³ã¿ãã§ãŒã¹ | 説æ |
|---|---|---|
static interface |
Stream.Builder<T> |
Streamã®å¯å€ãã«ããŒã§ãã |
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
boolean |
allMatch(Predicate<? super T> predicate) |
ãã®ã¹ããªãŒã ã®ãã¹ãŠã®èŠçŽ ãæå®ãããè¿°èªã«äžèŽãããã©ãããè¿ããŸãã
|
boolean |
anyMatch(Predicate<? super T> predicate) |
ãã®ã¹ããªãŒã ã®ããããã®èŠçŽ ãæå®ãããè¿°èªã«äžèŽãããã©ãããè¿ããŸãã
|
static <T> Stream.Builder<T> |
builder() |
Streamã®ãã«ããŒãè¿ããŸãã |
<R,A> R |
collect(Collector<? super T,A,R> collector) |
Collectorã䜿ã£ãŠãã®ã¹ããªãŒã ã®èŠçŽ ã«å¯Ÿããå¯å€ãªãã¯ã·ã§ã³æäœãå®è¡ããŸãã |
<R> R |
collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã«å¯ŸããŠå¯å€ãªãã¯ã·ã§ã³æäœãå®è¡ããŸãã
|
static <T> Stream<T> |
concat(Stream<? extends T> a, Stream<? extends T> b) |
æåã®ã¹ããªãŒã ã®å
šèŠçŽ ãš2çªç®ã®ã¹ããªãŒã ã®å
šèŠçŽ ãé£çµãããã®ãèŠçŽ ã«æã€ãé
å»¶é£çµã¹ããªãŒã ãäœæããŸãã
|
long |
count() |
ãã®ã¹ããªãŒã ã®èŠçŽ ã®åæ°ãè¿ããŸãã
|
Stream<T> |
distinct() |
ãã®ã¹ããªãŒã ã®éè€ãé€ããèŠçŽ (
Object.equals(Object)ã«ãã)ããæ§æãããã¹ããªãŒã ãè¿ããŸãã |
static <T> Stream<T> |
empty() |
空ã®é 次
Streamãè¿ããŸãã |
Stream<T> |
filter(Predicate<? super T> predicate) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã®ãã¡ãæå®ãããè¿°èªã«äžèŽãããã®ããæ§æãããã¹ããªãŒã ãè¿ããŸãã
|
Optional<T> |
findAny() |
ã¹ããªãŒã ã®ããèŠçŽ ãèšè¿°ãã
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)ãè¿ããŸãã |
Optional<T> |
findFirst() |
ãã®ã¹ããªãŒã ã®æåã®èŠçŽ ãèšè¿°ãã
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)ãè¿ããŸãã |
<R> Stream<R> |
flatMap(Function<? super T,? extends Stream<? extends R>> mapper) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ãããããããã¹ããªãŒã (æå®ããããããã³ã°é¢æ°ãåèŠçŽ ã«é©çšããããšã§åŸããã)ã®å
容ã§çœ®ãæããçµæããæãã¹ããªãŒã ãè¿ããŸãã
|
DoubleStream |
flatMapToDouble(Function<? super T,? extends DoubleStream> mapper) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ãããã®èŠçŽ ã«æå®ããããããã³ã°é¢æ°ãé©çšããããšã«ãã£ãŠçæããããããå
ã¹ããªãŒã ã®å
容ã§çœ®ãæããçµæããæ§æããã
DoubleStreamãè¿ããŸãã |
IntStream |
flatMapToInt(Function<? super T,? extends IntStream> mapper) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ãããããããã¹ããªãŒã (æå®ããããããã³ã°é¢æ°ãåèŠçŽ ã«é©çšããããšã§åŸããã)ã®å
容ã§çœ®ãæããçµæããæã
IntStreamãè¿ããŸãã |
LongStream |
flatMapToLong(Function<? super T,? extends LongStream> mapper) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ãããããããã¹ããªãŒã (æå®ããããããã³ã°é¢æ°ãåèŠçŽ ã«é©çšããããšã§åŸããã)ã®å
容ã§çœ®ãæããçµæããæã
LongStreamãè¿ããŸãã |
void |
forEach(Consumer<? super T> action) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ã«å¯ŸããŠã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
|
void |
forEachOrdered(Consumer<? super T> action) |
ãã®ã¹ããªãŒã ã®åèŠçŽ ã«å¯ŸããŠã¢ã¯ã·ã§ã³ãå®è¡ããŸãããã®å®è¡é ã¯ãã¹ããªãŒã ã®æ€åºé ãå®çŸ©ãããŠããå Žåã¯ãã®é çªã«ãªããŸãã
|
static <T> Stream<T> |
generate(Supplier<T> s) |
æå®ããã
Supplierã«ãã£ãŠçæãããèŠçŽ ãå«ããé åºä»ããããŠããªãç¡éé æ¬¡ã¹ããªãŒã ãè¿ããŸãã |
static <T> Stream<T> |
iterate(T seed, UnaryOperator<T> f) |
åæèŠçŽ
seedã«é¢æ°fãç¹°ãè¿ãé©çšããããšã§çæããããé åºä»ããããç¡éé æ¬¡Streamãè¿ããŸã(seedãf(seed)ãf(f(seed))ããšãã£ãèŠçŽ ããæãStreamãçæããã)ã |
Stream<T> |
limit(long maxSize) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã
maxSize以å
ã®é·ãã«åãè©°ããçµæããæãã¹ããªãŒã ãè¿ããŸãã |
<R> Stream<R> |
map(Function<? super T,? extends R> mapper) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã«æå®ããã颿°ãé©çšããçµæããæ§æãããã¹ããªãŒã ãè¿ããŸãã
|
DoubleStream |
mapToDouble(ToDoubleFunction<? super T> mapper) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã«æå®ããã颿°ãé©çšããçµæããæ§æããã
DoubleStreamãè¿ããŸãã |
IntStream |
mapToInt(ToIntFunction<? super T> mapper) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã«æå®ããã颿°ãé©çšããçµæããæ§æããã
IntStreamãè¿ããŸãã |
LongStream |
mapToLong(ToLongFunction<? super T> mapper) |
ãã®ã¹ããªãŒã ã®èŠçŽ ã«æå®ããã颿°ãé©çšããçµæããæ§æããã
LongStreamãè¿ããŸãã |
Optional<T> |
max(Comparator<? super T> comparator) |
æå®ããã
Comparatorã«åŸã£ãŠãã®ã¹ããªãŒã ã®æå€§èŠçŽ ãè¿ããŸãã |
Optional<T> |
min(Comparator<? super T> comparator) |
æå®ããã
Comparatorã«åŸã£ãŠãã®ã¹ããªãŒã ã®æå°èŠçŽ ãè¿ããŸãã |
boolean |
noneMatch(Predicate<? super T> predicate) |
æå®ãããè¿°èªã«äžèŽããèŠçŽ ããã®ã¹ããªãŒã å
ã«ååšããªããã©ãããè¿ããŸãã
|
static <T> Stream<T> |
of(T... values) |
æå®ãããå€ãèŠçŽ ã«æã€ãé åºä»ããããé æ¬¡ã¹ããªãŒã ãè¿ããŸãã
|
static <T> Stream<T> |
of(T t) |
åäžèŠçŽ ãå«ãé æ¬¡
Streamãè¿ããŸãã |
Stream<T> |
peek(Consumer<? super T> action) |
ãã®ã¹ããªãŒã ã®èŠçŽ ããæãã¹ããªãŒã ãè¿ãã»ãããã®çµæã®ã¹ããªãŒã ããæ¶è²»ãããåèŠçŽ ã«å¯Ÿããæå®ãããã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
|
Optional<T> |
reduce(BinaryOperator<T> accumulator) |
çµåçãªçޝç©é¢æ°ã䜿ã£ãŠãã®ã¹ããªãŒã ã®èŠçŽ ã«å¯ŸããŠãªãã¯ã·ã§ã³ãå®è¡ãããªãã¥ãŒã¹ãããå€ãååšããå Žåã¯ãã®å€ãèšè¿°ãã
Optionalãè¿ããŸãã |
T |
reduce(T identity, BinaryOperator<T> accumulator) |
æå®ãããåäœå
ã®å€ãšçµåçãªçޝç©é¢æ°ã䜿ã£ãŠãã®ã¹ããªãŒã ã®èŠçŽ ã«å¯ŸããŠãªãã¯ã·ã§ã³ãå®è¡ãããªãã¥ãŒã¹ãããå€ãè¿ããŸãã
|
<U> U |
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner) |
æå®ãããåäœå
ã环ç©é¢æ°ãããã³çµåç颿°ã䜿çšããŠããã®ã¹ããªãŒã ã®èŠçŽ ã«å¯ŸããŠãªãã¯ã·ã§ã³ãå®è¡ããŸãã
|
Stream<T> |
skip(long n) |
ãã®ã¹ããªãŒã ã®æåã®
nåã®èŠçŽ ãç Žæ£ããæ®ãã®èŠçŽ ã§æ§æãããã¹ããªãŒã ãè¿ããŸãã |
Stream<T> |
sorted() |
ãã®ã¹ããªãŒã ã®èŠçŽ ãèªç¶é åºã«åŸã£ãŠãœãŒãããçµæããæ§æãããã¹ããªãŒã ãè¿ããŸãã
|
Stream<T> |
sorted(Comparator<? super T> comparator) |
ãã®ã¹ããªãŒã ã®èŠçŽ ãæå®ããã
Comparatorã«åŸã£ãŠãœãŒãããçµæããæ§æãããã¹ããªãŒã ãè¿ããŸãã |
Object[] |
toArray() |
ãã®ã¹ããªãŒã ã®èŠçŽ ãå«ãé
åãè¿ããŸãã
|
<A> A[] |
toArray(IntFunction<A[]> generator) |
æå®ããã
generator颿°ã䜿çšããŠããã®ã¹ããªãŒã ã®èŠçŽ ãå«ãé
åãè¿ããè¿ãããé
åãšãããŒãã£ã·ã§ã³åãããå®è¡ãŸãã¯ãµã€ãºå€æŽã«å¿
èŠãšãªãå¯èœæ§ã®ãã远å ã®é
åãå²ãåœãŠãŸãã |
close, isParallel, iterator, onClose, parallel, sequential, spliterator, unorderedStream<T> filter(Predicate<? super T> predicate)
ããã¯äžéæäœã§ãã
predicate - åèŠçŽ ãå«ããã¹ããå€å®ããç®çã§åèŠçŽ ã«é©çšãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªè¿°èª<R> Stream<R> map(Function<? super T,? extends R> mapper)
ããã¯äžéæäœã§ãã
R - æ°ããã¹ããªãŒã ã®èŠçŽ ã®åmapper - åèŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°IntStream mapToInt(ToIntFunction<? super T> mapper)
IntStreamãè¿ããŸãã
ããã¯äžéæäœã§ãã
mapper - åèŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°LongStream mapToLong(ToLongFunction<? super T> mapper)
LongStreamãè¿ããŸãã
ããã¯äžéæäœã§ãã
mapper - åèŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
DoubleStreamãè¿ããŸãã
ããã¯äžéæäœã§ãã
mapper - åèŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
ã¯ããŒãºãããŸãã (ãããå
ã¹ããªãŒã ãnullã®å Žåã¯ãããã«ç©ºã®ã¹ããªãŒã ã䜿çšãããŸãã)
ããã¯äžéæäœã§ãã
flatMap()æäœã«ã¯ãã¹ããªãŒã ã®èŠçŽ ã«å¯ŸããŠ1察å€ã®å€æãé©çšããåŸãçµæã®èŠçŽ ãæ°ããã¹ããªãŒã å
ã«ãã©ããåãã广ããããŸãã
äŸ
ordersã賌å
¥æ³šæã®ã¹ããªãŒã ã§ãããå賌å
¥æ³šæã«ã¯æçްè¡ã®ã³ã¬ã¯ã·ã§ã³ãå«ãŸããŠããå Žåãæ¬¡ã®ããã«ãããšããã¹ãŠã®æ³šæã®ãã¹ãŠã®æçްè¡ãå«ãã¹ããªãŒã ãçæãããŸãã
orders.flatMap(order -> order.getLineItems().stream())...
pathããã¡ã€ã«ãžã®ãã¹ã§ããå Žåãæ¬¡ã®ããã«ãããšããã®ãã¡ã€ã«ã«å«ãŸããåèªã®ã¹ããªãŒã ãçæãããŸãã
Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8);
Stream<String> words = lines.flatMap(line -> Stream.of(line.split(" +")));
flatMapã«æž¡ãããmapper颿°ã¯ãåçŽãªæ£èŠè¡šçŸã䜿ã£ãŠ1è¡ãåèªã®é
åã«åå²ããåŸããã®é
åããåèªã®ã¹ããªãŒã ãäœæããŸããR - æ°ããã¹ããªãŒã ã®èŠçŽ ã®åmapper - æ°ããå€ã®ã¹ããªãŒã ãçæããããã«åèŠçŽ ã«é©çšãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°IntStream flatMapToInt(Function<? super T,? extends IntStream> mapper)
IntStreamãè¿ããŸãã åãããå
ã¹ããªãŒã ã¯ããã®å
容ããã®ã¹ããªãŒã å
ã«é
眮ããããšã¯ããŒãºãããŸãã (ãããå
ã¹ããªãŒã ãnullã®å Žåã¯ãããã«ç©ºã®ã¹ããªãŒã ã䜿çšãããŸãã)
ããã¯äžéæäœã§ãã
mapper - æ°ããå€ã®ã¹ããªãŒã ãçæããããã«åèŠçŽ ã«é©çšãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°flatMap(Function)LongStream flatMapToLong(Function<? super T,? extends LongStream> mapper)
LongStreamãè¿ããŸãã åãããå
ã¹ããªãŒã ã¯ããã®å
容ããã®ã¹ããªãŒã å
ã«é
眮ããããšã¯ããŒãºãããŸãã (ãããå
ã¹ããªãŒã ãnullã®å Žåã¯ãããã«ç©ºã®ã¹ããªãŒã ã䜿çšãããŸãã)
ããã¯äžéæäœã§ãã
mapper - æ°ããå€ã®ã¹ããªãŒã ãçæããããã«åèŠçŽ ã«é©çšãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°flatMap(Function)DoubleStream flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)
DoubleStreamãè¿ããŸãã åãããå
ã¹ããªãŒã ã¯ããã®å
容ããã®ã¹ããªãŒã å
ã«é
眮ããããšã¯ããŒãºãããŸãã (ãããå
ã¹ããªãŒã ãnullã®å Žåã¯ãããã«ç©ºã®ã¹ããªãŒã ã䜿çšãããŸãã)
ããã¯äžéæäœã§ãã
mapper - æ°ããå€ã®ã¹ããªãŒã ãçæããããã«åèŠçŽ ã«é©çšãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªé¢æ°flatMap(Function)Stream<T> distinct()
Object.equals(Object)ã«ãã)ããæ§æãããã¹ããªãŒã ãè¿ããŸãã
é åºä»ããããã¹ããªãŒã ã®å Žåãéè€ã®ãªãèŠçŽ ã®éžæã¯å®å®ããŠããŸã(éè€ããèŠçŽ ã§ã¯ãæ€åºé ã§æåã«çŸããèŠçŽ ãç¶æãããŸãã) é åºä»ããããŠããªãã¹ããªãŒã ã®å Žåãå®å®æ§ã¯äžåä¿èšŒãããŸããã
ããã¯ã¹ããŒããã«ãªäžéæäœã§ãã
distinct()ã®å®å®æ§ãç¶æããã³ã¹ãã¯æ¯èŒçé«ããªããŸã(æäœãå®å
šãªããªã¢ãŒãšããŠåäœããå¿
èŠãããããããã¡ãªã³ã°ã®ãªãŒããŒããããããªã倧ãããªã)ããå®å®æ§ãäžèŠãªããšããããããŸãã ç¶æ³ã®ã»ãã³ãã£ãã¯ã¹ãèš±ãã°ãé åºä»ããããŠããªãã¹ããªãŒã ã»ãœãŒã¹(generate(Supplier)ãªã©)ã䜿çšããããBaseStream.unordered()ã§é åºä»ãã®å¶çŽããªããã°ã䞊åãã€ãã©ã€ã³ã§ã®distinct()ã®å®è¡å¹çã倧å¹
ã«åäžããå¯èœæ§ããããŸãã æ€åºé åºãšã®æŽåæ§ãå¿
èŠã§ããã€äžŠåãã€ãã©ã€ã³ã§ã®distinct()ã®ããã©ãŒãã³ã¹ãã¡ã¢ãªãŒäœ¿çšéã«åé¡ãããå Žåã«ã¯ãBaseStream.sequential()ã§é 次å®è¡ã«åãæ¿ãããšããã©ãŒãã³ã¹ãæ¹åãããå¯èœæ§ããããŸãã Stream<T> sorted()
Comparableã§ãªãå Žåã¯ãçµç«¯æäœã®å®è¡æã«java.lang.ClassCastExceptionãã¹ããŒãããå¯èœæ§ããããŸãã
é åºä»ããããã¹ããªãŒã ã®å ŽåããœãŒãã¯å®å®ããŠããŸãã é åºä»ããããŠããªãã¹ããªãŒã ã®å Žåãå®å®æ§ã¯äžåä¿èšŒãããŸããã
ããã¯ã¹ããŒããã«ãªäžéæäœã§ãã
Stream<T> sorted(Comparator<? super T> comparator)
Comparatorã«åŸã£ãŠãœãŒãããçµæããæ§æãããã¹ããªãŒã ãè¿ããŸãã
é åºä»ããããã¹ããªãŒã ã®å ŽåããœãŒãã¯å®å®ããŠããŸãã é åºä»ããããŠããªãã¹ããªãŒã ã®å Žåãå®å®æ§ã¯äžåä¿èšŒãããŸããã
ããã¯ã¹ããŒããã«ãªäžéæäœã§ãã
comparator - ã¹ããªãŒã èŠçŽ ã®æ¯èŒã«äœ¿çšããããéå¹²æžã§ã¹ããŒãã¬ã¹ãªComparatorStream<T> peek(Consumer<? super T> action)
ããã¯äžéæäœã§ãã
䞊åã¹ããªãŒã ã»ãã€ãã©ã€ã³ã®å Žåãäžæµã®æäœã«ãã£ãŠçšæãããåèŠçŽ ã«å¯Ÿããä»»æã®ã¿ã€ãã³ã°ã§ä»»æã®ã¹ã¬ããå ã§ã¢ã¯ã·ã§ã³ãåŒã³åºãããå¯èœæ§ããããŸãã ã¢ã¯ã·ã§ã³ãå ±æç¶æ ã倿Žããå Žåãå¿ èŠãªåæãæäŸãã責任ã¯ã¢ã¯ã·ã§ã³ã«ãããŸãã
Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> System.out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped value: " + e))
.collect(Collectors.toList());
action - ã¹ããªãŒã ããæ¶è²»ãããèŠçŽ ã«å¯ŸããŠå®è¡ãã¹ãéå¹²æžã¢ã¯ã·ã§ã³Stream<T> limit(long maxSize)
maxSize以å
ã®é·ãã«åãè©°ããçµæããæãã¹ããªãŒã ãè¿ããŸãã
ããã¯ãã¹ããŒããã«ãªç絡äžéæäœã§ãã
limit()ã¯ãé æ¬¡ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã§ã¯äžè¬ã«äœã³ã¹ãã®æäœã§ãããé åºä»ãããã䞊åãã€ãã©ã€ã³ã§ã¯ã³ã¹ããéåžžã«é«ããªãå¯èœæ§ããããŸã(ç¹ã«maxSizeã®å€ã倧ããå Žå)ãä»»æã®nåã®èŠçŽ ãè¿ãã ãã§ãªããæ€åºé ã§ã®æåã®nåã®èŠçŽ ãè¿ããªããã°ãããªãããšããå¶çŽãlimit(n)ã«èª²ãããããã§ãã ç¶æ³ã®ã»ãã³ãã£ãã¯ã¹ãèš±ãã°ãé åºä»ããããŠããªãã¹ããªãŒã ã»ãœãŒã¹(generate(Supplier)ãªã©)ã䜿çšããããBaseStream.unordered()ã§é åºä»ãã®å¶çŽããªããã°ã䞊åãã€ãã©ã€ã³ã®limit()ã倧å¹
ã«é«éåãããå¯èœæ§ããããŸãã æ€åºé åºãšã®æŽåæ§ãå¿
èŠã§ããã€äžŠåãã€ãã©ã€ã³ã§ã®limit()ã®ããã©ãŒãã³ã¹ãã¡ã¢ãªãŒäœ¿çšéã«åé¡ãããå Žåã«ã¯ãBaseStream.sequential()ã§é 次å®è¡ã«åãæ¿ãããšããã©ãŒãã³ã¹ãæ¹åãããå¯èœæ§ããããŸãã maxSize - ã¹ããªãŒã ã®èŠçŽ æ°ã®äžéIllegalArgumentException - maxSizeãè² ã®å ŽåStream<T> skip(long n)
nåã®èŠçŽ ãç Žæ£ããæ®ãã®èŠçŽ ã§æ§æãããã¹ããªãŒã ãè¿ããŸãã ãã®ã¹ããªãŒã ã«å«ãŸããèŠçŽ ã®æ°ãnåããå°ãªãå Žåã¯ã空ã®ã¹ããªãŒã ãè¿ãããŸãã
ããã¯ã¹ããŒããã«ãªäžéæäœã§ãã
skip()ã¯ãé æ¬¡ã¹ããªãŒã ã»ãã€ãã©ã€ã³ã§ã¯äžè¬ã«äœã³ã¹ãã®æäœã§ãããé åºä»ãããã䞊åãã€ãã©ã€ã³ã§ã¯ã³ã¹ããéåžžã«é«ããªãå¯èœæ§ããããŸã(ç¹ã«nã®å€ã倧ããå Žå)ãä»»æã®nåã®èŠçŽ ãã¹ãããããã ãã§ãªããæ€åºé ã§ã®æåã®nåã®èŠçŽ ãã¹ãããããªããã°ãããªãããšããå¶çŽãskip(n)ã«èª²ãããããã§ãã ç¶æ³ã®ã»ãã³ãã£ãã¯ã¹ãèš±ãã°ãé åºä»ããããŠããªãã¹ããªãŒã ã»ãœãŒã¹(generate(Supplier)ãªã©)ã䜿çšããããBaseStream.unordered()ã§é åºä»ãã®å¶çŽããªããã°ã䞊åãã€ãã©ã€ã³ã®skip()ã倧å¹
ã«é«éåãããå¯èœæ§ããããŸãã æ€åºé åºãšã®æŽåæ§ãå¿
èŠã§ããã€äžŠåãã€ãã©ã€ã³ã§ã®skip()ã®ããã©ãŒãã³ã¹ãã¡ã¢ãªãŒäœ¿çšéã«åé¡ãããå Žåã«ã¯ãBaseStream.sequential()ã§é 次å®è¡ã«åãæ¿ãããšããã©ãŒãã³ã¹ãæ¹åãããå¯èœæ§ããããŸãã n - ã¹ãããããå
é èŠçŽ ã®æ°IllegalArgumentException - nãè² ã®å Žåvoid forEach(Consumer<? super T> action)
ããã¯çµç«¯æäœã§ãã
ãã®æäœã®åäœã¯æããã«é決å®è«çã§ãã 䞊åã¹ããªãŒã ã»ãã€ãã©ã€ã³ã®å Žåããã®æäœã¯ãã¹ããªãŒã ã®æ€åºé åºãèæ ®ããããšãä¿èšŒããŸãããä¿èšŒãããšäžŠåæ§ã®ã¡ãªãããç ç²ã«ãªãããã§ãã äžããããä»»æã®èŠçŽ ã«å¯Ÿããã©ã€ãã©ãªãéžæããä»»æã®ã¿ã€ãã³ã°ã§ä»»æã®ã¹ã¬ããå ã§ã¢ã¯ã·ã§ã³ãå®è¡ãããå¯èœæ§ããããŸãã ã¢ã¯ã·ã§ã³ãå ±æç¶æ ã«ã¢ã¯ã»ã¹ããå Žåãå¿ èŠãªåæãæäŸãã責任ã¯ã¢ã¯ã·ã§ã³ã«ãããŸãã
action - èŠçŽ ã«å¯ŸããŠå®è¡ããéå¹²æžã¢ã¯ã·ã§ã³void forEachOrdered(Consumer<? super T> action)
ããã¯çµç«¯æäœã§ãã
ãã®æäœã¯ãæ€åºé åºãååšããå Žåã¯ãã®é åºã§ãèŠçŽ ãäžåºŠã«1ã€ãã€åŠçããŸãã ããèŠçŽ ã®ã¢ã¯ã·ã§ã³å®è¡ã¯ãã®åŸç¶èŠçŽ ã®ã¢ã¯ã·ã§ã³å®è¡ãããåã«çºçããŸãããã©ã®èŠçŽ ã«ã€ããŠããã©ã€ãã©ãªãéžæããä»»æã®ã¹ã¬ããå ã§ã¢ã¯ã·ã§ã³ãå®è¡ãããå¯èœæ§ããããŸãã
action - èŠçŽ ã«å¯ŸããŠå®è¡ããéå¹²æžã¢ã¯ã·ã§ã³forEach(Consumer)Object[] toArray()
ããã¯çµç«¯æäœã§ãã
<A> A[] toArray(IntFunction<A[]> generator)
generator颿°ã䜿çšããŠããã®ã¹ããªãŒã ã®èŠçŽ ãå«ãé
åãè¿ããè¿ãããé
åãšãããŒãã£ã·ã§ã³åãããå®è¡ãŸãã¯ãµã€ãºå€æŽã«å¿
èŠãšãªãå¯èœæ§ã®ãã远å ã®é
åãå²ãåœãŠãŸãã
ããã¯çµç«¯æäœã§ãã
Person[] men = people.stream()
.filter(p -> p.getGender() == MALE)
.toArray(Person[]::new);
A - çµæãšãªãé
åã®èŠçŽ ã®ågenerator - èŠæ±ãããåãšæå®ãããé·ããæã€æ°ããé
åãçæãã颿°ArrayStoreException - é
åãžã§ãã¬ãŒã¿ããè¿ãããé
åã®å®è¡æã®åãããã®ã¹ããªãŒã å
ã®åèŠçŽ ã®å®è¡æã®åã®ã¹ãŒããŒã»ã¿ã€ãã§ãªãå ŽåT reduce(T identity, BinaryOperator<T> accumulator)
T result = identity;
for (T element : this stream)
result = accumulator.apply(result, element)
return result;
ãã ããé æ¬¡å®è¡ã®å¶çŽã課ãããããã§ã¯ãããŸããã
identityå€ã¯ã¢ãã¥ã ã¬ãŒã¿é¢æ°ã®åäœå
ã§ãªããã°ãããŸããã ã€ãŸãããã¹ãŠã®tã«ã€ããŠãaccumulator.apply(identity, t)ãtã«çãããªããŸãã ã¢ãã¥ã ã¬ãŒã¿é¢æ°ã¯çµåçãªé¢æ°ã§ãªããã°ãããŸããã
ããã¯çµç«¯æäœã§ãã
Integer sum = integers.reduce(0, (a, b) -> a+b);
ãŸãã¯
Integer sum = integers.reduce(0, Integer::sum);
ããã¯ãåçŽã«ã«ãŒãã§äžéåèšãæŽæ°ããŠããæ¹æ³ã«æ¯ã¹ãŠé åããªéèšæ¹æ³ã«èŠãããããããŸãããããªãã¯ã·ã§ã³æäœã®äžŠååã容æã«è¡ãã䞊ååã®éã«åæã远å ããå¿ èŠããªããããŒã¿ç«¶åã®ãªã¹ã¯ãå€§å¹ ã«æžå°ããŸãã
identity - èç©é¢æ°ã«å¯Ÿããåäœå
ã®å€accumulator - 2ã€ã®å€ãçµåããããã®çµåçãéå¹²æžãããã³ã¹ããŒãã¬ã¹ãªé¢æ°Optional<T> reduce(BinaryOperator<T> accumulator)
Optionalãè¿ããŸãã ããã¯ãæ¬¡ã®æäœã«çžåœããŸãã
boolean foundAny = false;
T result = null;
for (T element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.apply(result, element);
}
return foundAny ? Optional.of(result) : Optional.empty();
ãã ããé æ¬¡å®è¡ã®å¶çŽã課ãããããã§ã¯ãããŸããã
ã¢ãã¥ã ã¬ãŒã¿é¢æ°ã¯çµåçãªé¢æ°ã§ãªããã°ãããŸããã
ããã¯çµç«¯æäœã§ãã
accumulator - 2ã€ã®å€ãçµåããããã®çµåçãéå¹²æžãããã³ã¹ããŒãã¬ã¹ãªé¢æ°OptionalNullPointerException - ãªãã¯ã·ã§ã³ã®çµæãnullã®å Žåreduce(Object, BinaryOperator), min(Comparator), max(Comparator)<U> U reduce(U identity,
BiFunction<U,? super T,U> accumulator,
BinaryOperator<U> combiner)
U result = identity;
for (T element : this stream)
result = accumulator.apply(result, element)
return result;
ãã ããé æ¬¡å®è¡ã®å¶çŽã課ãããããã§ã¯ãããŸããã
identityå€ã¯ã³ã³ãã€ã颿°ã®åäœå
ã§ãªããã°ãããŸããã ã€ãŸãããã¹ãŠã®uã«ã€ããŠãcombiner(identity, u)ãuã«çãããªããŸãã ããã«ãcombiner颿°ã¯accumulator颿°ãšäºææ§ãããå¿
èŠããããŸãããã¹ãŠã®uãštã«ã€ããŠã次ãæãç«ã€å¿
èŠããããŸãã
combiner.apply(u, accumulator.apply(identity, t)) == accumulator.apply(u, t)
ããã¯çµç«¯æäœã§ãã
mapæäœãšreduceæäœãæç€ºçã«çµã¿åãããããšã§ãããåçŽã«è¡šçŸããããšãã§ããŸãã accumulator颿°ã¯ããããŒãšã¢ãã¥ã ã¬ãŒã¿ãèåãããã®ãšããŠåäœããŸãããããã¯ã以åã®ãªãã¥ãŒã¹å€ãããã£ãŠããã°äžéšã®èšç®ãåé¿ã§ããå Žåãªã©ããããã³ã°ãšãªãã¯ã·ã§ã³ãåå¥ã«å®è¡ãããããå¹ççã«ãªãå ŽåããããŸãã U - çµæã®åidentity - ã³ã³ãã€ã颿°ã«å¯Ÿããåäœå
ã®å€accumulator - 远å ã®èŠçŽ ãçµæã«çµã¿èŸŒãããã®ãçµåçãéå¹²æžããã³ã¹ããŒãã¬ã¹ãªé¢æ°combiner - 2ã€ã®å€ãçµåããããã®çµåçãéå¹²æžããã³ã¹ããŒãã¬ã¹ãªé¢æ°(ã¢ãã¥ã ã¬ãŒã¿é¢æ°ãšäºææ§ããªããã°ãããªã)reduce(BinaryOperator), reduce(Object, BinaryOperator)<R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
ArrayListã®ãããªå¯å€ã®çµæã³ã³ããã§ãããçµæã眮ãæãããããã«çµæã®ç¶æ
ãæŽæ°ããããšã«ãã£ãŠèŠçŽ ãçµã¿èŸŒãŸãããããªãªãã¯ã·ã§ã³ã®ããšã§ãã ããã¯æ¬¡ãšåçã®çµæãçæããŸãã
R result = supplier.get();
for (T element : this stream)
accumulator.accept(result, element);
return result;
collectæäœã¯reduce(Object, BinaryOperator)ãšåæ§ãåæã远å ããªããŠã䞊ååã§ããŸãã
ããã¯çµç«¯æäœã§ãã
collect()ã®åŒæ°(ã¡ãœããåç
§)ã§ã®äœ¿çšã«é©ããã·ã°ããã£ãæã€æ¢åã¯ã©ã¹ã倿°ååšããŠããŸãã ããšãã°æ¬¡ã®å ŽåãæååãArrayListå
ã«èç©ãããŸãã
List<String> asList = stringStream.collect(ArrayList::new, ArrayList::add,
ArrayList::addAll);
次ã®å Žåãæååã®ã¹ããªãŒã ãåãåãããããããé£çµãããŠåäžã®æååã«ãªããŸãã
String concat = stringStream.collect(StringBuilder::new, StringBuilder::append,
StringBuilder::append)
.toString();
R - çµæã®åsupplier - æ°ããçµæã³ã³ãããäœæãã颿°ã 䞊åå®è¡ã®å Žåããã®é¢æ°ã¯è€æ°ååŒã³åºãããå¯èœæ§ããããŸããããã®ãã³ã«æ°ããå€ãè¿ãå¿
èŠããããŸãã accumulator - 远å ã®èŠçŽ ãçµæã«çµã¿èŸŒãããã®ãçµåçãéå¹²æžããã³ã¹ããŒãã¬ã¹ãªé¢æ°combiner - 2ã€ã®å€ãçµåããããã®çµåçãéå¹²æžããã³ã¹ããŒãã¬ã¹ãªé¢æ°(ã¢ãã¥ã ã¬ãŒã¿é¢æ°ãšäºææ§ããªããã°ãããªã)<R,A> R collect(Collector<? super T,A,R> collector)
Collectorã䜿ã£ãŠãã®ã¹ããªãŒã ã®èŠçŽ ã«å¯Ÿããå¯å€ãªãã¯ã·ã§ã³æäœãå®è¡ããŸãã collect(Supplier, BiConsumer, BiConsumer)ã®åŒæ°ãšããŠäœ¿çšããã颿°ãã«ãã»ã«åããCollectorã䜿ãã°ãã³ã¬ã¯ã·ã§ã³æ¹éã®åå©çšãcollectæäœã®åæ(ãã«ãã¬ãã«ã®ã°ã«ãŒãåãåå²ãªã©)ãå¯èœãšãªããŸãã
ã¹ããªãŒã ã䞊åçã§ãããCollectorã䞊è¡çã§ããããã€ã¹ããªãŒã ãé åºä»ããããŠããªããã³ã¬ã¯ã¿ãunorderedã§ããå Žåã䞊è¡ãªãã¯ã·ã§ã³ãå®è¡ãããŸã(䞊è¡ãªãã¯ã·ã§ã³ã®è©³çްã¯Collectorãåç
§ã)
ããã¯çµç«¯æäœã§ãã
䞊åå®è¡æã«ã¯ãè€æ°ã®äžéçµæã®ã€ã³ã¹ã¿ã³ã¹åãããŒã¿èšå®ãããã³ããŒãžãå¯èœã§ãããããå¯å€ããŒã¿æ§é ã®éé¢ãç¶æã§ããŸãã ãããã£ãŠãã¹ã¬ããã»ãŒãã§ãªãããŒã¿æ§é (ArrayListãªã©)ã§äžŠåå®è¡ãè¡ãå Žåã§ãã䞊åãªãã¯ã·ã§ã³çšã®åæã远å ããå¿
èŠã¯ãããŸããã
List<String> asList = stringStream.collect(Collectors.toList());
次ã®å ŽåãPersonãªããžã§ã¯ããåžçºæå¥ã«åé¡ãããŸãã
Map<String, List<Person>> peopleByCity
= personStream.collect(Collectors.groupingBy(Person::getCity));
次ã®å Žåã2ã€ã®Collectorãã«ã¹ã±ãŒãæ¥ç¶ããããšã«ãããPersonãªããžã§ã¯ããéœéåºçå¥ãåžçºæå¥ã«åé¡ãããŸãã
Map<String, Map<String, List<Person>>> peopleByStateAndCity
= personStream.collect(Collectors.groupingBy(Person::getState,
Collectors.groupingBy(Person::getCity)));
R - çµæã®åA - Collectorã®äžéèç©ã®åcollector - ãªãã¯ã·ã§ã³ãèšè¿°ããCollectorcollect(Supplier, BiConsumer, BiConsumer), CollectorsOptional<T> min(Comparator<? super T> comparator)
Comparatorã«åŸã£ãŠãã®ã¹ããªãŒã ã®æå°èŠçŽ ãè¿ããŸãã ããã¯ãªãã¯ã·ã§ã³ã®ç¹æ®ãªå Žåã§ãã
ããã¯çµç«¯æäœã§ãã
comparator - ãã®ã¹ããªãŒã ã®èŠçŽ ãæ¯èŒãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªComparatorOptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)NullPointerException - æå°èŠçŽ ãnullã®å ŽåOptional<T> max(Comparator<? super T> comparator)
Comparatorã«åŸã£ãŠãã®ã¹ããªãŒã ã®æå€§èŠçŽ ãè¿ããŸãã ããã¯ãªãã¯ã·ã§ã³ã®ç¹æ®ãªå Žåã§ãã
ããã¯çµç«¯æäœã§ãã
comparator - ãã®ã¹ããªãŒã ã®èŠçŽ ãæ¯èŒãããéå¹²æžã§ã¹ããŒãã¬ã¹ãªComparatorOptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)NullPointerException - æå€§èŠçŽ ãnullã®å Žålong count()
return mapToLong(e -> 1L).sum();
ããã¯çµç«¯æäœã§ãã
boolean anyMatch(Predicate<? super T> predicate)
falseãè¿ãããè¿°èªã¯è©äŸ¡ãããŸããã
ããã¯ç絡çµç«¯æäœã§ãã
predicate - ã¹ããªãŒã ã®èŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªè¿°èªtrueãããã§ãªãå Žåã¯falseboolean allMatch(Predicate<? super T> predicate)
trueãè¿ãããè¿°èªã¯è©äŸ¡ãããŸããã
ããã¯ç絡çµç«¯æäœã§ãã
trueã«ãªããŸãã predicate - ã¹ããªãŒã ã®èŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªè¿°èªtrueããã以å€ã®å Žåã¯falseboolean noneMatch(Predicate<? super T> predicate)
trueãè¿ãããè¿°èªã¯è©äŸ¡ãããŸããã
ããã¯ç絡çµç«¯æäœã§ãã
trueã«ãªããŸãã predicate - ã¹ããªãŒã ã®èŠçŽ ã«é©çšããéå¹²æžã§ã¹ããŒãã¬ã¹ãªè¿°èªtrueããã以å€ã®å Žåã¯falseOptional<T> findFirst()
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)ãè¿ããŸãã ã¹ããªãŒã ãæ€åºé åºãæããªãå Žåã¯ãä»»æã®èŠçŽ ãè¿ãããŸãã
ããã¯ç絡çµç«¯æäœã§ãã
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)NullPointerException - éžæãããèŠçŽ ãnullã®å ŽåOptional<T> findAny()
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)ãè¿ããŸãã
ããã¯ç絡çµç«¯æäœã§ãã
ãã®æäœã®åäœã¯æããã«é決å®è«çã§ããã¹ããªãŒã ã®ä»»æã®èŠçŽ ãèªç±ã«éžæã§ããŸãã ããã¯ã䞊ååŠçã§ã®ããã©ãŒãã³ã¹ãæå€§åã§ããããã«ããããã§ãããã¡ãªããã¯ãåããœãŒã¹ã«å¯ŸããŠåŒã³åºããã³ã«ãéãçµæãè¿ãããå¯èœæ§ãããç¹ã§ãã (å®å®ããçµæãå¿
èŠãªå Žåã¯ããããã«findFirst()ã䜿çšããŠãã ããã)
OptionalãŸãã¯ç©ºã®Optional (ã¹ããªãŒã ã空ã®å Žå)NullPointerException - éžæãããèŠçŽ ãnullã®å ŽåfindFirst()static <T> Stream.Builder<T> builder()
Streamã®ãã«ããŒãè¿ããŸããT - èŠçŽ ã®åstatic <T> Stream<T> empty()
Streamãè¿ããŸããT - ã¹ããªãŒã èŠçŽ ã®åstatic <T> Stream<T> of(T t)
Streamãè¿ããŸããT - ã¹ããªãŒã èŠçŽ ã®åt - åäžèŠçŽ @SafeVarargs static <T> Stream<T> of(T... values)
T - ã¹ããªãŒã èŠçŽ ã®åvalues - æ°ããã¹ããªãŒã ã®èŠçŽ static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
seedã«é¢æ°fãç¹°ãè¿ãé©çšããããšã§çæããããé åºä»ããããç¡éé æ¬¡Streamãè¿ããŸã(seedãf(seed)ãf(f(seed))ããšãã£ãèŠçŽ ããæãStreamãçæããã)ã
Streamã®æåã®èŠçŽ (äœçœ®0)ã¯ãæå®ãããseedã«ãªããŸãã n > 0ã®å Žåãäœçœ®nã®èŠçŽ ã¯ãäœçœ®n - 1ã®èŠçŽ ã«é¢æ°fãé©çšããçµæã«ãªããŸãã
T - ã¹ããªãŒã èŠçŽ ã®åseed - åæèŠçŽ f - æ°ããèŠçŽ ãçæããããã«1ã€åã®èŠçŽ ã«é©çšããã颿°Streamstatic <T> Stream<T> generate(Supplier<T> s)
Supplierã«ãã£ãŠçæãããèŠçŽ ãå«ããé åºä»ããããŠããªãç¡éé æ¬¡ã¹ããªãŒã ãè¿ããŸãã ããã¯ã宿°ã¹ããªãŒã ãã©ã³ãã ãªèŠçŽ ããæãã¹ããªãŒã ãªã©ãçæããã®ã«é©ããŠããŸãã T - ã¹ããªãŒã èŠçŽ ã®ås - çæãããèŠçŽ ã®SupplierStreamstatic <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
StackOverflowExceptionãçºè¡ãããå¯èœæ§ãããããŸãã T - ã¹ããªãŒã èŠçŽ ã®åa - æåã®ã¹ããªãŒã b - 2çªç®ã®ã¹ããªãŒã ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã