JDK 8の新しい特性Streamストリームの一般的な方法
6416 ワード
ストリーム表現には一連の要素の集合が含まれており、これらの要素を計算するために異なるタイプの操作を行うことができます.
二.中間ストリームの部分に中間操作を適用すると、再び1つのストリームが返されるので、複数の中間操作をリンクすることができます.ここではプラス記号は使用されません.
結果:
Streamストリーム終端動作方法終端動作は対流動作の終端動作であり、一般にvoidまたは非ストリームの結果を返す.
二.中間ストリームの部分に中間操作を適用すると、再び1つのストリームが返されるので、複数の中間操作をリンクすることができます.ここではプラス記号は使用されません.
/*
Stream
-
, ,Stream 。
-
Stream filter(Predicate predicate)
Stream limit(long maxSize) ,
Stream skip(long n) ,
static Stream concat(Stream a, Stream b) a b
Stream distinct() ( Object.equals(Object) )
Stream sorted() ,
Stream sorted(Comparator comparator) , Comparator
Stream map(Function mapper)
IntStream mapToInt(ToIntFunction mapper) IntStream
*/
public class StreamDemo {
public static void main( String[] args ) {
List list = new ArrayList<>();
list.add(" ");
list.add(" ");
list.add(" ");
list.add(" ");
list.add(" ");
System.out.println("-----------Stream filter(Predicate predicate)----------------");
/*
Stream filter(Predicate predicate)
Predicate : ( )。
startsWith : String ;
*/
list.stream().filter(s -> s.startsWith(" ")).forEach(System.out::println);// :
System.out.println("-------------- Stream limit(long maxSize) ------------------");
/*
Stream limit(long maxSize) ,
*/
list.stream().limit(3).forEach(s -> System.out.println(s));// :
System.out.println("---------------static Stream concat(Stream a, Stream b)-----------------");
// Stream skip(long n) ,
// list.stream().skip(2).forEach(System.out::println);// 2 :
//static Stream concat(Stream a, Stream b) a b
Stream limit = list.stream().limit(3);
Stream skip = list.stream().skip(3);
Stream.concat(limit, skip).forEach(System.out::print); //
//Stream distinct() ( Object.equals(Object) )
Stream.concat(list.stream().limit(3), list.stream().skip(2)).distinct().forEach(System.out::println);// :
System.out.println("-------Stream sorted() -----------");
//Stream sorted() ,
list.stream().sorted().forEach(System.out::println);
System.out.println("-------------Stream sorted(Comparator comparator)--------------------");
//Stream sorted(Comparator comparator) , Comparator
list.stream().sorted((s1,s2)->s1.length()-s2.length()).forEach(System.out::println);//
System.out.println("---------Stream map(Function mapper) -------------");
// Stream map(Function mapper)
list.stream().map(s -> s).forEach(System.out::println);// String String
System.out.println("-----------IntStream mapToInt(ToIntFunction mapper)------------------");
//IntStream mapToInt(ToIntFunction mapper) IntStream
// map , Integer sum
List list1 = new ArrayList<>();
list1.add(100);
list1.add(111);
list1.add(211);
list1.add(311);
int sum = list1.stream().mapToInt(s -> s).sum();//
System.out.println(" : "+sum);
System.out.println("------------------- ----------------------");
list1.stream().mapToInt(s -> s)// s s
.average()//
.ifPresent(System.out::println);//
System.out.println("-----------------------Optional findFirst\u200B() Optional , Optional 。----------------------------");
//Optional findFirst() Optional , Optional 。
list1.stream().findFirst().ifPresent(System.out::println);
}
}
結果:
-------------- Stream limit(long maxSize) ------------------
---------------static Stream concat(Stream a, Stream b)-----------------
-------Stream sorted() -----------
-------------Stream sorted(Comparator comparator)--------------------
---------Stream map(Function mapper) -------------
-----------IntStream mapToInt(ToIntFunction mapper)------------------
: 733
------------------- ----------------------
183.25
-----------------------Optional findFirst() Optional , Optional 。----------------------------
100
Streamストリーム終端動作方法終端動作は対流動作の終端動作であり、一般にvoidまたは非ストリームの結果を返す.
import java.util.ArrayList;
import java.util.List;
/*
Stream 【 】
-
, ,Stream 。
-
void forEach(Consumer action)
long count()
*/
public class StreamDemo1 {
public static void main( String[] args ) {
List arr = new ArrayList<>();
arr.add(" ");
arr.add(" ");
arr.add(" 2");
arr.add(" 3");
System.out.println("---------------void forEach(Consumer action)\t ---------------");
arr.stream().forEach(System.out::println);
System.out.println("--------------------long count() \t -----------------------");
long count = arr.stream().filter(s -> s.startsWith(" ")).count();
System.out.println(count);//
}
}