1方式一:
2IntStream naturalNumbers =IntStream.iterate(1, x -> x +1);3 naturalNumbers.limit(5).forEach(System.out::println);45方式二:
6Stream<Double> infiniteRandomNumbers =Stream.generate(Math::random);7 infiniteRandomNumbers.limit(10).forEach(System.out::println);
流转集合
1方式一:
2List<String> list =Stream.of("a","b","c").collect(Collectors.toList());34方式二:
5List<String> list =Stream.of("a","b","c").collect(Collectors.toCollection(ArrayList::new));67方式三:
8List<String> list =Stream.of("a","b","c").collect(Collectors.toCollection(()->newArrayList<>()));
1reduce方法的作用类似于码积木
23OptionalInt result =IntStream.range(1,10).reduce((b,l)-> b+l);// 454int result =IntStream.range(1,10).reduce(100,(b,l)-> b+l);// 145
使用流生成随机字符串
1SecureRandom 实例化开销很大,可以使用setSeed重置
23下面生成的随机字符串只包含数字和字母
45SecureRandom sr =newSecureRandom();67 sr.setSeed(sr.generateSeed(20));8 int length =20;9Stream<Character> randomCharStream = sr.ints(Character.MIN_CODE_POINT,Character.MAX_CODE_POINT).mapToObj(i ->(char)i).filter(c -> c >='0'&& c <='z'&&Character.isLetterOrDigit(c)).limit(length);10String randomString = randomCharStream.collect(StringBuilder::new,StringBuilder::append,StringBuilder::append).toString();
1String value ="abc";2String str =Optional.ofNullable(value).map(String::toUpperCase).orElse("NONE");// ABC34String value =null;5String str =Optional.ofNullable(value).orElseGet(()->"defaultValue");// defaultValue67String value =null;8String str =Optional.ofNullable(value).orElseThrow(IllegalArgumentException::new);910int value =123;11int result =Optional.ofNullable(value).filter(item -> item ==123).get();