zoukankan      html  css  js  c++  java
  • JDK8新特性Stream流操作

     1 package stream;
     2 
     3 import java.util.ArrayList;
     4 import java.util.function.Function;
     5 import java.util.stream.Stream;
     6 
     7 public class test {
     8     public static void main(String[] args) {
     9         ArrayList<String> one = new ArrayList<>();
    10         one.add("迪丽热巴");
    11         one.add("宋远桥");
    12         one.add("苏星河");
    13         one.add("石破天");
    14         one.add("石中玉");
    15         one.add("老子");
    16         one.add("庄子");
    17         one.add("洪七公");
    18         //第二支队伍
    19         ArrayList<String> two = new ArrayList<>();
    20         two.add("古力娜扎");
    21         two.add("张无忌");
    22         two.add("赵丽颖");
    23         two.add("张三丰");
    24         two.add("尼古拉斯赵四");
    25         two.add("张天爱");
    26         two.add("张二狗");
    27 
    28         //1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。
    29         Stream<String> stream = one.stream();
    30         Stream<String> stringStream = stream.filter((String name) -> name.length() == 3);
    31 //        stringStream.forEach((String name)-> System.out.println(name));
    32 
    33         //2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。
    34         Stream<String> limit = stringStream.limit(3);
    35 //        limit.forEach((String name)-> System.out.println(name));
    36 
    37         //3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中。
    38         Stream<String> stream1 = two.stream();
    39         Stream<String> zhanglist = stream1.filter((String name) -> name.startsWith("张"));
    40 //        zhanglist.forEach((String name)-> System.out.println(name));
    41 
    42         //4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中。
    43         Stream<String> skip = zhanglist.skip(2);
    44 //        skip.forEach((String name)-> System.out.println(name));
    45 
    46         //5. 将两个队伍合并为一个队伍;存储到一个新集合中。
    47         Stream<String> concat = Stream.concat(limit, skip);
    48 //        concat.forEach((String name)-> System.out.println(name));
    49 
    50         //6. 根据姓名创建 Person 对象;存储到一个新集合中。
    51         Stream<Person> personStream = concat.map((String name) -> new Person(name));
    52 
    53         //7. 打印整个队伍的Person对象信息。
    54         personStream.forEach((Person person) -> System.out.println(person));
    55     }
    56 
    57 }
    # 注:代码中注释部分 是由于如果直接打印 ,该流对象就会失效,后续操作无法进行。

    创建流对象的两种方式

    1 java.util.stream.Stream<T>是Java 8新加入的最常用的流接口。(这并不是一个函数式接口。)
    2 获取一个流非常简单,有以下几种常用的方式:
    3         - 所有的Collection集合都可以通过stream默认方法获取流;
    4             default Stream<E> stream​()
    5         - Stream接口的静态方法of可以获取数组对应的流。
    6             static <T> Stream<T> of​(T... values)
    7             参数是一个可变参数,那么我们就可以传递一个数组
    forEach()方法和count()方法属于终结方法,返回的对象是最终结果。像filter()、map()、concat()、skip()、limit()等返回的仍然是stream对象。而且filter()、map()、concat()、skip()、limit()
    这些方法内部可以使用lambda表达式。
  • 相关阅读:
    B-tree/B+tree/B*tree
    java拆装箱(转)
    C语言身份证信息查询系统(修改版)
    UC编程:字符读取与行读取
    UC编程:通过fwrite()和write()比较标准库函数和系统调用的速度
    UC编程:输入输出重定向(系统调用)
    UC编程:输入输出重定向(标准IO)
    UC编程:环境变量的查询与修改
    Perl基础(1)chop与chomp的区别
    假期“实习”20天生存实录
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/13526696.html
Copyright © 2011-2022 走看看