Stream流和方法引用(Java8新特性)

目录

一、Stream流

1、引言

2、流式思想概述

3、获取流

4、常用方法

二、方法引用

1、冗余的Lambda场景

2、方法改进

3、方法引用符

4、通过对象名引用成员方法

5、通过类名称引用静态方法

6、 通过super引用成员方法

7、通过this引用成员方法

8、类的构造器引用

9、数组的构造器引用


一、Stream流

1、引言

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张大侠");
        list.add("金毛狮王");
        list.add("青翼蝠王");
        list.add("张三疯a");

        list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==4).forEach(
                System.out::println
        );
    }

2、流式思想概述

 

3、获取流

4、常用方法

 

package com.dzg.estream;

import com.dzg.domain.Person;
import com.dzg.domain.Pson;

import java.util.ArrayList;
import java.util.stream.Stream;

public class StreamTest {

    public static void main(String[] args) {

        ArrayList<String> one = new ArrayList<>();
        one.add("老邓头");
        one.add("张大侠");
        one.add("金毛狮王");
        one.add("青翼蝠王");
        one.add("张三疯a");

        ArrayList<String> two = new ArrayList<>();
        two.add("张无忌");
        two.add("周芷若");
        two.add("刘若彤");
        two.add("张三");
        two.add("李四");


        ArrayList<String> oneA = new ArrayList<>();
        for (String name:
             one) {
            if(name.length() == 3){
                oneA.add(name);
            }
        }
        ArrayList<String> oneB = new ArrayList<>();
        for (int i = 0; i <2 ; i++) {
            oneB.add(oneA.get(i));
        }

        ArrayList<String> twoA = new ArrayList<>();
        for (String name:
             two) {
            if(name.startsWith("张")){
                twoA.add(name);
            }
        }

        ArrayList<String> twoB = new ArrayList<>();
        for (int i = 2; i < twoA.size(); i++) {
            twoB.add(two.get(i));
        }

        ArrayList<String> totalNames = new ArrayList<>();
        totalNames.addAll(oneB);
        totalNames.addAll(twoB);


        ArrayList<Pson> personArrayList = new ArrayList<>();
        for (String name:
             totalNames) {
            personArrayList.add(new Pson(name));
        }

        for (Pson person :
               personArrayList ) {
            System.out.println(person);
        }

        /**
         * 上述是使用传统的方式处理,下面使用Stream流的方式处理
         */
        System.out.println("====================================");

        /**
         * 第一个队伍只要名字为三个字的成员中,前三位
         */
        Stream<String> streamOne = one.stream().filter(s->s.length()==3).limit(3);
        /**
         * 第二队伍只要性张的,去掉前两位
         */
        Stream<String> streamTwo = two.stream().filter(s -> s.startsWith("张")).skip(2);

        /**
         * 将两个队伍合并为一个队伍,并根据Pson类创建对象,打印出所有对象
         */
        Stream.concat(streamOne,streamTwo).map(Pson::new).forEach(System.out::println);

    }
}

二、方法引用

1、冗余的Lambda场景

2、方法改进

3、方法引用符

4、通过对象名引用成员方法

 

5、通过类名称引用静态方法

6、 通过super引用成员方法

7、通过this引用成员方法

8、类的构造器引用

9、数组的构造器引用

但是更好的写法是使用数组的构造器引用:

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值