Stream流
在不是很了解stream流时,我们常用的是for循环去对集合进行操作。而现如今,随着stream流的普及,大家可以尝试着用stream流去代替for循环,好处有二,第一,stream流的执行效率要高于for循环,第二,用stream流比用for循环显得水平高点,代码更简洁好看一些。第三,stream流可以做筛选,不必通过SQL语句进行筛选。
接下来,我们来认识一下stream流。
stream流是数据渠道,用于操作数据源(集合,数组等等)所生成的元素序列(不是一种数据结构)
那么如何使用stream流呢?
创建stream
//1、通过Collection系列提供的stream()(串行) 或parallelStream()(并行)获取
List<String> list = new ArrayList<>();
Stream<String> stream1 = list.stream();//串行流
Stream<String> stream2 = list.parallelStream();//并行流
//2、通过Arrays中的静态方法stream() 获取数据流
User[] u = new User[2];
Stream<User> stream3 = Arrays.stream(u);
//3、通过Stream;类中的静态方法of()
Stream<String> stream4 = Stream.of("11","2");
中间操作
filter
//筛选出原Id集合中包含130的id元素
List<String> newId = oldId.stream().filter(item -> item.contains("130"));
limit
//筛选出前10条数据
List<String> newId = oldId.stream().limit(10);
skip
//跳过前10个元素,此时就会从第11个元素开始操作
List<String> newId = oldId.stream().skip(10);
distinct
//取出原id中的id元素,不允许有重复id
List<String> newId = oldId.stream().distinct();
map
//练习,获取人员姓名长度大于3的人员的姓名
List<Person> persons = PersonData.getPersons();
//将Person类型的stream流映射为String类型的stream流
Stream<String> nameStream = persons.stream().map(Person::getName);
//获取到姓名长度>3的stream流
nameStream.filter(name->name.length()>3).forEach(System.out::println);
未完,待续。。。