java8 Stream 使用示例

/***
 * java 8 的 Stream 使用到了 哪些 函数接口 ?
 *
 */
public class JavaStreamTest {
    /***
     * stream 的常见操作
     * 操作分为 中间 操作和最终操作
     * 中间操作得到的还是一个流
     * 要想得到我们想要的结果 ,如输入, 装入一个集合 ,计算个数 ,就需要最终操作。
     * 而且执行过最终操作后,流就不再可以使用。 否则会报异常
     * 最终操作有 :forEach   count     collect
     * @param args
     */
    public static void main(String args[]){
        // Stream 的创建:由集合创建或者由可变参数,数组创建
        Stream<String>  stringStream = Arrays.asList("hello"," beauty","girl").stream();
        String[] strings = new String[]{"i","fine","thank","you"};
        Stream<String>  stringStreamByArray = Stream.of(strings);

        //  void forEach(Consumer<? super T> action);
        //  Consumer 接口的抽象方法   void accept(T t);


        // 过滤操作   Stream<T> filter(Predicate<? super T> predicate);
        //  Predicate 接口的抽象方法   boolean test(T t);
        Arrays.asList("hello"," beauty","girl").stream().filter(str -> str.length()>4).forEach(System.out::println);   //  找出长度大于4 的字符串

        // map操作       <R> Stream<R> map(Function<? super T, ? extends R> mapper);
        // Function接口的抽象方法     R apply(T t);

        List<Integer> list = Arrays.asList("hello"," beauty","girl").stream().map(s -> s.length()).collect(Collectors.toList());          // 映射字符串长度
        System.out.println("collect 操作 ");
        list.stream().forEach(System.out::println);

        //sorted操作
        Arrays.asList(10,50,100,15,666).stream().sorted();
        Arrays.asList("hello"," beauty","girl").stream().sorted(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        });

        // distinct 操作
        Arrays.asList("hello","hello"," beauty","girl").stream().distinct().forEach(System.out::println);

        // limit/skip 操作   limit 取前面n 个 , skip 是跳过 n 个
        Arrays.asList(10,50,100,15,666).stream().sorted().limit(1).forEach(System.out::println);
        Arrays.asList(10,50,100,15,666).stream().sorted().skip(2).forEach(System.out::println);


        // flatMap 操作
        //    <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
        // Function 接应的 抽象函数 为     R apply(T t);
        // 与map 方法的区别在于 R 的返回类型 是 一个流   ? extends Stream<? extends R>
        Arrays.asList("hello","hello","beauty","girl").stream().flatMap(s->Arrays.asList(s.toCharArray()).stream()).forEach(System.out::print);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值