@Test
public void testCreate ( ) {
System . out. println ( "1::create" ) ;
Stream < Integer > stream = Stream . of ( 1 , 2 , 34 , 5 , 65 ) ;
stream. forEach ( System . out:: println ) ;
List < Integer > list = new ArrayList < Integer > ( ) { { add ( 3 ) ; add ( 4 ) ; } } ;
list. forEach ( System . out:: println ) ;
}
@Test
public void testConcat ( ) {
Stream < Integer > stream = Stream . of ( 1 , 2 , 34 , 5 , 65 ) ;
List < Integer > list = new ArrayList < Integer > ( ) { { add ( 3 ) ; add ( 4 ) ; } } ;
System . out. println ( "2::concat" ) ;
Stream < Integer > concat = Stream . concat ( stream, list. stream ( ) ) ;
concat. forEach ( System . out:: println ) ;
}
@Test
public void testFlapMap ( ) {
Stream < Integer > stream = Stream . of ( 1 , 2 , 34 , 5 , 65 ) ;
List < Integer > list = new ArrayList < Integer > ( ) { { add ( 3 ) ; add ( 4 ) ; } } ;
System . out. println ( "3::flapMap" ) ;
Stream . of ( stream, list. stream ( ) ) . flatMap ( value -> value) . forEach ( System . out:: println ) ;
}
@Data
@Accessors ( chain = true )
static class Student {
private String name;
private Integer age;
}
static List < Student > studentList = new ArrayList < > ( ) ;
static {
Student zs = new Student ( ) . setAge ( 10 ) . setName ( "zs" ) ;
Student a2 = new Student ( ) . setAge ( 12 ) . setName ( "a2" ) ;
Student a1 = new Student ( ) . setAge ( 12 ) . setName ( "a1" ) ;
Student ls = new Student ( ) . setAge ( 10 ) . setName ( "ls" ) ;
studentList. add ( zs) ;
studentList. add ( ls) ;
studentList. add ( a1) ;
studentList. add ( a2) ;
}
@Test
public void testStudent ( ) {
Map < Integer , Student > studentMap = studentList. stream ( )
. collect ( Collectors . toMap ( Student :: getAge , Function . identity ( ) , ( s, a) -> s) ) ;
studentMap. forEach ( ( k, v) -> {
System . out. println ( k + "-" + v. toString ( ) ) ;
} ) ;
}
@Test
public void testStudentSort ( ) {
List < Student > studentList = StreamTest . studentList. stream ( )
. sorted ( Comparator . comparing ( Student :: getAge ) . thenComparing ( Student :: getName ) )
. collect ( Collectors . toList ( ) ) ;
studentList. forEach ( ( student) -> {
System . out. println ( student) ;
} ) ;
}
public void testTj ( ) {
IntSummaryStatistics summaryStatistics = studentList. stream ( ) . collect ( Collectors . summarizingInt ( Student :: getAge ) ) ;
System . out. println ( "getAverage->" + summaryStatistics. getAverage ( ) ) ;
System . out. println ( "getMax->" + summaryStatistics. getMax ( ) ) ;
System . out. println ( "getMin->" + summaryStatistics. getMin ( ) ) ;
System . out. println ( "getCount->" + summaryStatistics. getCount ( ) ) ;
System . out. println ( "getSum->" + summaryStatistics. getSum ( ) ) ;
}
@Test
public void testReduce ( ) {
Integer sum = StreamTest . studentList. stream ( ) . map ( Student :: getAge ) . reduce ( ( x, y) -> x += y) . get ( ) ;
System . out. println ( sum) ;
}