A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们JDK9的新特性就学习完毕了,请根据自己的理解回答下面问题:
1、我们目前为止,学了几个函数式接口,都有什么用?
2、获取流有几种方式?
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解

31 个回复

倒序浏览
1、我们目前为止,学了几个函数式接口,都有什么用?
Pridicate  对数据进行判断
Function 对数据进行转换
主要用在对数据进行筛选处理
2、获取流有几种方式?
collection  list.stream();
Map keySet.stream()  entrySet.stream()  values.stream()
数组 Stream.0f(arr)
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
Stream流可以通过使用函数式接口的各种方法对数据进行处理,方便对大量数据进行删选,处理,可以通过简单的代码进行并行处理,

点评

发表于 2019-7-21 00:36
回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier<T>接口:生产一个对象
Consumer<T>接口:消费(使用)一个对象
Predicate<T>接口:按条件过滤对象
Function<T,R>接口:对象的转换操作
2、获取流有几种方式?
单列集合.stream
双列集合.keySet.stream 双列集合.values.stream 双列集合.entrySet
Stream.of(数组)
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口是对面向函数式编程的前提,有且只有一个抽象方法,使用方法跟匿名内部类相似,是与他原理不一样的语法糖,可以减少代码冗余,面向函数式编程可以延迟执行,节省了资源.
Stream流是用操作管道对数据结构的数据抓取,它不会修改自己所封装的底层结构的数据,作用是类似流水线的流式操作
回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Consumer
用于消费一个给定泛型
Supplier
用于生产一个给定泛型
Predicate
用于判断一个给定的泛型是否满足条件。
Function
用于将一个泛型转换为另外一个泛型
2、获取流有几种方式?
1)通过集合对象的stream()方法
2)通过Stream.of()静态方法获取
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解

函数式接口的出现,能够有效的节约资源,改变了传统面向对象的编程思想,解决了传统代码过分注重格式造成的代码臃肿的问题。
Stream流是将一个集合或者数组放到一条“生产线”上,只需要调用方法传递给对应的lambda表达式,就可以有效的得到我们预期想要的结果,由于lambda的引入,所以在资源上,也可以做到有效的节约资源。
回复 使用道具 举报
谢精良

1.Supplier<T>       产生一个数据类型
Consumer<T>             消费一个数据类型
Predicate<T>            用于条件判断的场景,返回boolean类型
Function<T,R>             将类型为T的数据转换为类型为R的数据
Runnable                线程执行内容重写
Filefilter                   对参数文件进行某个规则过滤
Comparator                外部比较器

2. 三种   根据collection获取流   根据map获取流  根据数组获取流
3.函数式接口:有且仅有一个抽象方法的接口Stream流:解决集合类库既有的弊端   ,具有更优写法
回复 使用道具 举报
梁端刚
今天我们JDK9的新特性就学习完毕了,请根据自己的理解回答下面问题:
1、我们目前为止,学了几个函数式接口,都有什么用?
Comparactor 外部比较器 int campare(E e,E,e)
Filefilter 文件筛选器 boolean creat()
Runnable 多线程创建 void run()
Supplier 生产式 E get()
Consumer 消费式 void accept(E e)
Predicate 判断式boolean test(E e)
Function 转换式 R apply(E e)
2、获取流有几种方式?
单列集合调用stream()
双列集合getKeys(),values(),entrySet()单列集合调用stream()
数组 Arrays.stream(),Stream of()
Stream of()
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口就是有且仅有一个抽象方法的接口,只有函数式接口,才可用Lambda表达式,引入了函数式编程思想,强调做什么,而不是怎么做。
Stream流,处理并解决数组,集合的弊端,本身不是集合元素,也不是数据类型,可看作为管道,仅处理数据,只能消费一次即消亡,拥有延迟性,可并行
回复 使用道具 举报
王宇晨
1、我们目前为止,学了几个函数式接口,都有什么用?Runnable:多线程       Comparator:比较器       FileFilter:筛选
Supplier:获取一个对象数据          Consumer:消费一个数据
Predicate:对数据进行判断            Function:数据转换
2、获取流有几种方式?
有三种方式:
根据Collection集合获取流
根据Map集合获取流
根据数组获取流
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解


两个都是JDK8的新特性。
函数式接口就是只有一个抽象方法的接口,适用于lambda表达式。
Stream流既不是集合也不是数据结构,用来解决集合中既有的弊端,相当于一个流水线,可以进行筛选,跳过,映射,计数等操作
回复 使用道具 举报
吴佳更
1.4个,Supplier,生产型接口。可以生产一个数据;
            Consumer,消费型接口,消耗一个数据。
            Function,转换类型。
            Predicate,判断,可以用来筛选。
2.三种,list或set可以直接.stream;
   数组可以Stream.of(数组名);
map可以获取键或者值或者entryset来.stream
3.函数式接口有各自的用途,可用lambda表达式简化。Stream不创建对象,不会修改目标的数据,消费完就得重新获得才能使用,作用类似于流水线。
回复 使用道具 举报
贾宗虎

1、我们目前为止,学了几个函数式接口,都有什么用?
Runnable,Comparetor,FileFilter,Supplier,Consumer,Predicate,Function
Runnable, 多线程   
Comparator 比较器    抽象方法 compare(o1,o2),升序o1-o2,降序o2-o1
FileFilter 文件过滤器(筛子)  
Supplier 生产者  
Consumer 消费者      andThen方法
Predicate  条件判断
Function  类型转换   andThen方法

2、获取流有几种方式?

单列集合Collection都可以用对象名调用stream()方法,来获取流
双列集合可以ketSet,values,entrySet三种方式获取流.
数组可以调用Stream的静态方法of,将数组对象当做参数传进去来获取流

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解


函数式接口,是实现lambda表达式的根本.使我们摆脱了冗余的面向对象的格式
Stream流是用来解决集合类现有的一些弊端,也是基于lambda的基础上,优化了例如遍历集合等,使代码更优雅.更关注结果,而不是过程

回复 使用道具 举报
杨银万
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier接口,抽象方法get(),可以产生泛型对应类型的对象
Consumer接口,抽象方法accept(T t),可以使用泛型对应类型的对象
Predicate接口,抽象方法test(),可以进行判断操作返回布尔类型
Function接口,抽象方法R apply(T t),可以进行类型转换的操作,将T泛型对应类型的对象转换成R泛型对应类型的对象
2、获取流有几种方式?
三种:
单例集合获取:List对象.stream()。Set对象.stream()
双例集合获取:Map对象.keySet().stream()。Map对象.values().stream()。Map对象.entrySet().stream()
数组获取:Stream.of(数组)。Arrays.stream(数组)
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口是只有一个抽象方法的接口,这样的接口在使用时注重的是方法的实现即方法体的内容,不在乎接口实现类的创建,于是可以用注重操作过程的函数式编程来使用该类接口,用Lambda表达式和方法引用的方式可以简化书写。
Stream流是基于函数式编程的一种全新思想,用来解决集合类库的弊端,Stream流没有数据结构,不对数据进行存储,只能对数据进行一次遍历,单向不可往复,对数据进行更新时替换到另一个新的流中。

点评

发表于 2019-7-21 00:37
回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier“对外提供”一个符合泛型类型的对象数据
Consumer  消费一个指定泛型的数据
Predicate 对数据进行判断返回Boolean值
Function  口用来根据一个类型的数据得到另一个类型的数据
2、获取流有几种方式?
根据Collection获取流
根据Map获取流
根据数组 Stream.of(arr)
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口 有一个抽象方法 解决问题以前需要复杂的代码 而函数式接口可以简化代码  Stream是流动的数据 使用其方法进行操作
回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier,返回值泛型<T>,生成一个泛型数据类型.
Consumer,返回值void,消费一个数据.包含一个andThen方法,返回一个consumer数据,作用与对一个数据的多次消费.
Function<T,V>,返回值为V泛型数据,用于数据类型的转换.包含一个andThen方法,用于数据转换的多次操作,例如 :String -> Integer -> Double
Predicate<T>,用于判断参数是否满足判断条件.

2、获取流有几种方式?Collections单列集合的子实现类获得,格式 : 集合名.stream
静态方法,Stream.of(变量名);获得,

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解

函数式接口是一个功能接口,有且仅有一个抽象方法,通过lambda表达式去定义规则,具有延迟机制(在调用最终结果的时候才会运行中间方法),Stream流和函数式接口是配套起来用的,因为Stream流里的书写方法必须都要用lambda表达式,Stream流则是对一个集合做的优化操作,代码主要关注点在做什么(what),而不是怎么做(how).

雷锋

回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier<T> 生产一个指定泛型
Consumer<T> 消费一个指定泛型
Predicate 判断一个指定的泛型是否满足条件。
Function 将一个泛型转换为另外一个泛型
2、获取流有几种方式?
对象.Stream;  Stream.of()
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口为了解决代码冗余,节约资源,使lambda广泛运用;
Stream流解决了集合类库的弊端,节省资源,减少代码量
回复 使用道具 举报
郑雪平

今天学习常用函数式接口和Stream流,常用的函数式接口讲了predicate接口和function接口,predicate接口中有四种方法:抽象方法test;默认方法and,  or,和negate三个方法;抽象方法test用于条件判断的场景,or方法用于实现逻辑关系中的"或";Function接口相对于predicate接口而言它没那么多方法,只有抽象方法为R apply和默认的 andThen 方法两个;andThen 方法用来进行组合操作。
   Stream流它也是一种流,但是它不属于IO流范畴,是一个全新的Stream概念,用来解决已有集合类库既有的弊端。那么怎么去获取Stream流?可以通过三种方法获取:1.通过Collection 获取;2.通过Map来获取;3.根据数组来获取。它的常用的方法有:1.filter 过滤;2.count 统计个数;3.limit取用前几个;4.skip 跳过前几个;5.map映射;6.concat 合并两个流;7.forEach 逐一处理。
回复 使用道具 举报
林梅源
1、我们目前为止,学了几个函数式接口,都有什么用?
1、supplier接口,用来获取一个泛型参数指定类型的对象,生产;
无参方法;get;
2、Consumer接口,消费一个指定泛型的数据,抽象方法是accept;
默认方法是andthen
3、Predicate接口,返回一个boolean值,用于条件判断,抽象方法是Test
默认方法:and与,or或,negate飞;
4、Function接口,将前面类型转换成后面类型的数据,抽象方法是apply
2、获取流有几种方式?
所有Collection集合都可以通过Stream方法获取流
Stream静态接口of可以获取数组对应的流
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
做什么,而不是怎么做。
回复 使用道具 举报
吴香斌


1、我们目前为止,学了几个函数式接口,都有什么用?

runnable:是线程启动后,执行语句
comparator:是比较器,用于sort方法
Supplier:是生成接口,无参有返回值
Consumer:是消费接口,有参无返回值
Predicate:是布尔型比较接口,返回值是boolean,有默认方法andThen,可以添加多个比较条件
Function:是数据转换接口,将传入的参数转换为另一种参数进行返回.

2、获取流有几种方式?

不同的数据类型有不同的获取流方式
单链集合:调用stream()方法获取
双链集合:获取单独的键,值或者是键值对,然后再调用stream()方法获取
数组:将数组传入Stream.of()中获取

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解

函数式接口主要是为Lambda服务,Lambda表达式通过函数式接口得到实现.
所有stream的操作必须以Lambda表达式为参数.


回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Supplier<T> 接口 生产一个数据
Comsumer<T>接口 消费一个数据

Function<T,R>接口 转换

Predicate<T>接口 判断 返回一个布尔类型的值

2、获取流有几种方式?
集合名.stream
静态方法 Stream.of()获取

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口是因为Lamdba衍生而来的 减轻我们的代码量 在代码中更能体现出我们要做的是什么! 而不是怎么做 !
Stream流也是延续了方法引用的特性 注重的是做什么 而不是怎么做 那么Stream流是在我们操作集合的时候 更加方便我们对集合的操作 减轻我们的代码量


回复 使用道具 举报
彭东亮
1、我们目前为止,学了几个函数式接口,都有什么用?
(1)Supplier接口:用来获取一个泛型参数指定类型的对象数据;
(2)Consumer接口:是用来“消费”一个数据,其数据类型由泛型参数决定;
(3)Predicate接口:对数据进行判断;
(4)Function接口:进行数据类型的转换。
2、获取流有几种方式?
总共有三种获取流的方式,分别为:
(1)可以通过Stream默认方法获取单列集合,双列集合的流;
(2)通过Stream 接口的静态方法 of 可以获取数组对应的流。
3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口具有延迟性,节约了资源,解决了代码臃肿的问题;
使用Stream流时通过引用函数式接口,就能有效的到达我们所想要的结果,有效节约资源
回复 使用道具 举报
1、我们目前为止,学了几个函数式接口,都有什么用?
Runnable:多线程任务
Comparator:比较
FileFilter:文件过滤器

Supplier:生产数据
Consumer:消费数据
Predicate:判断数据
Function:转换数据

另外,并未深入学习但是有用到的接口
Collector(收集流的结果到集合时候使用了及格已经定义好的该接口的实现类(Collectors.toList和toSet)
IntFunction(在把流的结果收集到数组中时以引用数组的构造方法的形式使用)

2、获取流有几种方式?
从单列Collection获取流:直接调用stream();方法
从双列集合Map获取流:两种思路
1)keySet()方法获取键集合,然后对键集使用stream()方法;
2)entrySet()方法获取键值对集合,然后对键值对集使用stream()方法;

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
函数式接口,和Stream流,以及之前学过的Lambda表达式,作为函数式编程在Java语言中的体现,让开发者将更多的精力用在“做什么”上,而不是因为面向对象冗长的语法结构而把问题转移到仅仅是作为固定格式“怎么左”上。
流通过使用大量的函数式接口并配合Lambda表达式(关于流的操作不能使用匿名内部类,必须使用Lambda表达式),以类似于“流水线作业”的形式使得对于集合、数组等的操作从语法上更加简单直观,侧重于目的,大幅度提高了开发效率。
回复 使用道具 举报
黄希

1、我们目前为止,学了几个函数式接口,都有什么用?
        Comparable接口:实现固定的比较方法
        Comparator接口:实现临时的比较方法
        FileFilter接口:筛选符合条件的文件或文件夹
        Supplier接口:对外提供一个符合泛型类型的对象
        Consumer接口:消费一个数据,不返回数据
        Predicate接口:对某种类型的数据进行判断,返回boolean值
        Function接口:将某种类型的数据转换成另一种类型的数据

2、获取流有几种方式?
        1、根据Collection获取流
                使用java.util.Collection接口中的默认方法stream()获取流
                        Collection集合.stream()
       
        2、根据Map获取流
                先获取Map对象的键、值或entry集合,再使用stream()方法获取流
                        Map对象.keySet().Stream()
                        Map对象.values().Stream()
                        Map对象.entrySet().Stream()
       
        3、根据数组获取流
                使用Stream接口中的静态方法of()获取流
                        Stream.of(数组对象)

3、结合最近所学,请谈谈你对函数式接口以及Stream流的理解
        函数式接口指的是有且只有一个抽象方法的接口。
        所有函数式接口的实现类对象,都可以使用Lambda表达式进行替换,具有延迟执行的特性。
        如果Lambda表达式中的操作,已经在其他地方定义成方法,那么还可以使用方法引用来替代。
        Stream流是Java8引入的概念,用于解决已有集合类库的弊端,简化代码。
        Stream流是一个集合元素的函数模型,不是集合,也不是数据结构,不存储任何元素。
        像是生产流水线,从一个流模型转换成另一个流模型,允许多次转换,转换过程均是延迟操作。
        流模型的方法分为两种:
                返回值类型还是Stream接口类型的方法,称为延迟方法,例如filter、map、limit、skip;
                返回值类型不再是Stream接口类型的方法,称为终结方法,例如count、forEach。

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马