- package example3;
- import java.util.ArrayList;
- import java.util.stream.Stream;
- public class listStream {
- // java8 中的流其实是一个 stream 的接口对象
- // jdk 中提供了一个 java.util.stream.Stream<T>;
- public static void main(String[] args) {
- // 1. 通过一个集合获取流
- ArrayList<String> list = new ArrayList<>();
- list.add("赵丽颖, 15");
- list.add("鹿晗, 18");
- list.add("李易峰, 20");
- list.add("苏宝娟, 10");
- Stream<String> stream = list.stream();
- // 根据数组获取一个流
- String[] arrayStr = new String[] { "dfgha", "tyui", "erqq" };
- Stream<String> stream1 = Stream.of(arrayStr);
- Integer[] arrayInt = new Integer[] { 10, 20, 50, 40, 60 };
- Stream<Integer> stream3 = Stream.of(arrayInt);
- list.stream().map(s -> s.split(",")[1]).map(Integer::parseInt).filter(n -> n>= 15)
- .forEach(System.out::println);
- // 获取流之后, 可以使用映射方法: map(用于转换的 lambda 表达式)
- Stream<Integer> arrayIntger = list.stream().map((String str) -> {
- int num = Integer.parseInt(str);
- return num;
- });
- // lambda 表达式
- // s->System.out.println(s);
- // 对象名调用成员方法
- // System.out::println();
- // 如果流当中的元素特别多, 那么一个人挨个处理比较慢, 效率低.
- // 对流当中的元素使用多个人处理. 称为 "并发"
- // 如何获取并发流 (.parallelStream())
- System.out.println("================");
- // 如此调用也是同样的效果
- // 使用并发流会有多个人同时抢占位置, 顺序会被打乱, 但不会出现重复.
- list.stream().parallel().forEach(System.out::println);
- System.out.println("================");
- list.parallelStream().forEach(System.out::println);
- // 注: 使用并发流处理时, 到底有几个人同时操作不用管, jdk 会处理.
- // 只要正确使用, 就不会出现多个人同时抢到一个元素.
- }
- }
来源: http://www.bubuko.com/infodetail-2625988.html