Java8 Stream 的一些操作和介绍
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11858186.html
Java8 Stream 是一个新的东西, 就是能够将常见的数据结构转化成Stream, 再直接用这个Stream来做各种操作, 比如过滤, 大小写转换, 提取某个实体的某个属性, 都可以直接通过Stream的方法来操作, 直接链式编程 , 不需要再进行额外的 new 其他的什么对象等等. 下面直接贴代码介绍一下吧, 不作过多的介绍了, 用一两次就会了.
package stream8; import java.util.*; import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; /** * Stream 的一些操作和介绍 */ public class MainStream { public static void main(String[] args) { /** * 转换成Stream的方式 */ List<String> strings = new ArrayList<>(); strings.stream(); strings.parallelStream(); /** * 转换成Stream的方式 */ String[] arrStr = new String[]{"1", "2", "3"}; Arrays.stream(arrStr); Stream.of(strings); Stream.of(arrStr); /** * 一个Stream只能使用一次, 下面的用法只是为了演示 * Stream转换成其他数据结构 */ Stream stream = strings.stream(); stream.toArray(); stream.collect(Collectors.toList()); stream.collect(Collectors.toCollection(ArrayList::new)); stream.collect(Collectors.toSet()); stream.collect(Collectors.toCollection(Stack::new)); stream.collect(Collectors.joining()).toString(); /** * IntStream的用法 */ IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println); /** * Intermediate --> Stream 常见的中间操作, 就是可以一直用 "." 接下去的操作 */ stream.map(null); stream.mapToInt(null); stream.flatMap(null); stream.filter(null); stream.distinct(); stream.sorted(); stream.peek(null); stream.limit(0L); stream.skip(0L); stream.parallel(); stream.sequential(); stream.unordered(); /** * Terminal --> Stream的终止操作, 就是当执行完这个操作之后Stream的生命也到此为止了, 也就不能再用 "." 接下去了 */ stream.forEach(null); stream.forEachOrdered(null); stream.toArray(); stream.reduce(null); stream.collect(null); stream.min(null); stream.max(null); stream.count(); stream.anyMatch(null); stream.allMatch(null); stream.noneMatch(null); stream.findFirst(); stream.findAny(); stream.iterator(); /** * Short-circuiting --> 无穷和又穷一些约束下的一些操作 */ stream.anyMatch(null); stream.allMatch(null); stream.noneMatch(null); stream.findFirst(); stream.findAny(); stream.limit(0L); /** * 自己生成流 : Stream.generate */ Random seed = new Random(); Supplier<Integer> random = seed::nextInt; Stream.generate(random).limit(10).forEach(System.out::println); //Another way IntStream.generate(() -> (int) (System.nanoTime() % 100)). limit(10).forEach(System.out::println); } }