Stream流的使用函数式接口

  • 认识函数式接口
@FunctionalInterface
public interface Lamdbatest {
   
    Integer getdouble(Integer s);

}
  • Lamdba表达式
    lamdba可以实现函数式接口创建出一个对象,
    lamdba允许把一个函数作为一个方法的参数,或是将一个方法赋值给一个属性
-实现类实现接口
public class impllamdba implements Lamdbatest {
   
    @Override
    public Integer getdouble(Integer s) {
   
        return s+=s;
    }
}
-- 测试和lamdba表达式的区别
		//创建出函数式接口的是实现类对象
 		Lamdbatest impllamdba = new impllamdba();
 		//通过对象使用::符号来调用,返回property对象通过apply方法来实现
        Property<Integer, Integer> getdouble1 = impllamdba::getdouble;
        System.out.println(getdouble1.apply(2));
 		//调用实现类来调用方法
        System.out.println("这是函数式接口实现类使用"+impllamdba.getdouble(5));
        //通过lamdba表达式来是实现接口
        Integer getdouble = ((Lamdbatest) (s) -> s += s).getdouble(2);
        System.out.println("这个是lamdba表达式使用实现"+getdouble);

通过上述可以看出lamdba表达式可以实现函数式接口不用在自定义实现类了,可以自定义实现,
如果有实现类可以创建对象使用::来调用方法

  • stream流的使用
  • 什么是stream?
    一般是对集合进行使用,可以把集合中的元素看做是一种流,在流的过程中可以通过stream api来对元素进行操作
    数组和集合都可以创建成流,流的操作分为两种;
    1 中间操作 每次操作返回一个新的流,
    2 终端操作 操作一次就无法再次操作了
  • stream的特点
    1 不会存储数据
    2 不会改变数据源
    3 有延迟性只有调用终端操作时中间操作才会执行
  • 创建流
Collection.stream()方法来创建顺序流
Collection.parallelStream() 创建并行流
Arrays.stream(new array[]) 数组变成流
- stream中的静态方法
1 of()
2 iterate()
3 generate()
都可以返回成流

  • stream和parallelStream的区分
    1 stream是顺序流,由主线程处理
    2 parallelStream是并行流,多线程运行处理
  • Optional是对象容器
  • 示例
public static void main(String[] args) {
   
        List<Person> personList = new ArrayList<Person>();
        personList.add(new Person("Tom", 8900,4,<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值