public class IntegerSupplier implements Supplier<Integer> {
private int value = 0;
@Override
public Integer get() {
return value++;
}
}
Stream<Integer> stream = Stream.generate(new IntegerSupplier());
stream.limit(100).filter( x-> x % 2 != 0 ).map( x -> x * x ).forEach( x -> System.out.print( x + " "));
class NatureSupplier implements Supplier<Long> {
long value = 0;
@Override
public Long get() {
value += 1;
return value;
}
}
Stream<Long> naturalValues = Stream.generate(new NatureSupplier());
naturalValues.map( x -> x * x).limit(100).forEach( x -> System.out.print(x + " ") );
这里我们将stream的大小限制到了100个,否则的话,他会一直打印下去。
3. 读取文件内容
再比如我们要读入一个文件的所有行到一个set里面,如果是之前的话,我们可能需要这样:
123456
BufferedReader reader = new BufferedReader(new FileReader(new File(fileName)));
String line = reader.readLine();
while( line != null ) {
lineSet.add( line );
line = reader.readLine();
}