创建一个无限大小的Stream
Stream s = Stream.generate(()->1);
//测试循环10次
s.peek(System.out::println).limit(10).collect(Collectors.toList());
创建一个1到100的数字,然后求和
IntStream s = IntStream.iterate(1,t->t+1).limit(100);
//s = IntStream.range(1,100)
System.out.println(s.sum());
分组
类如下:
static class Stu {
public static Stu get(String name, String sex, String clas) {
Stu s = new Stu();
s.name = name;
s.sex = sex;
s.clas = clas;
return s;
}
public String name;
public String sex;
public String clas;
public String getName() {
return name;
}
public String getClas() {
return clas;
}
public String getSex() {
return sex;
}
}
测试类 按clas分组
Stu s1 = Stu.get("a1","F","A");
Stu s2 = Stu.get("a2","M","A");
Stu s3 = Stu.get("a3","F","B");
Stu s4 = Stu.get("a4","M","B");
System.out.println(Stream.of(s1,s2,s3,s4).collect(Collectors.groupingBy(Stu::getClas)));
按clas,sex分组
Stream.of(s1,s2,s3,s4).collect(Collectors.groupingBy(Stu::getClas,Collectors.groupingBy(Stu::getSex)))
分区
按是与否分2个区,
Stream.of(s1,s2,s3,s4).collect(Collectors.partitioningBy(t->StringUtils.equals(t.sex,"F")))
运行后结果:
{false=[spring.B$Stu@246b179d, spring.B$Stu@7a07c5b4], true=[spring.B$Stu@26a1ab54, spring.B$Stu@3d646c37]}
将Stu对象的name组成一个字符串,用:分隔
Stream.of(s1,s2,s3,s4).map(Stu::getName).collect(Collectors.joining(":"))