实践出真知👍
搜索
复制
当接口中只有一个接口的时候可以加上。表示这个接口可以用lambda表达式。多个接口的话不用加。
IDEA自带默认没有勾选
举个例子,如果是List集合(List.filter.stream(s -> ?)),s代表的就是List中的item。
thread后面的括号是构造方法的括号,构造方法的参数是和runnable接口绑定的,所以lambda表达式符合该函数类型的接口
函数式接口哦
PersonUtil实现了Comparator接口了?
按照你的系统配置,在Mac上运行会特别流畅的。如果vmOptions都修改了内存使用的配置还是卡顿,建议更换idea的使用版本[最新的2020.2体验就非常不错嗯]
又听了一遍课程,已解决,不好意思了。
没事了,我懂了,混淆了一些东西。
有的噢~
应该是跟重载规则类似的吧~
接口有且仅有一个抽象方法
允许定义静态方法
允许定义默认方法
允许java.lang.Object中的public方法
不会导致执行效率的降低
是
可以的咻
Map<String, String> strMap = new HashMap<>(); strMap.put("Jack", "上海市浦东新区"); strMap.put("Tom", "上海市闵行区"); //通过Map的EntrySet获取Stream对象 Map<String,String> newMap=new HashMap<>(); strMap.entrySet().stream().forEach(v->{ newMap.put(v.getKey(),v.getValue()); }); newMap.entrySet().stream().forEach(System.out::println);
传入参数会自动进行类型检查,对传入输入进行对应方法调用,如果调用了对应的方法但是参数、返回值等出现不一致情况会检查出错吖;你想想如果我们自己设计类似的流程,是不是也会这样去考虑呢
自建的类型提供了通用操作,可以让我们在写lambda表达式的时候直接使用而避免再去创建新的函数式接口,只是一种语法上的优化,而非必须。如果自己要创建实现的话思路和意义亦然,只是功能重复的话就没有必要了,个性化需求的话新创建就好啦吖,你说对吧。
静态方法和默认方法只是对接口功能的扩展,在原来的JDK老版本中没有这样的接口,我们不是一样编程开发么,对吧。只是添加了这样的功能之后在接口中就能完成通用的处理操作,避免了实现类中操作的麻烦而已。
这样,估计是复制粘贴没改过来 Optional optional = list.parallelStream().max((p1, p2)-> p1.hot - p2.hot);
因为多个线程同时可能都处理了同一条数据,比如线程1和线程2,cpu先分配线程1处理数据,线程1处理到第20个数据时,还未处理完,cpu分配时间到了,然后cpu分配任务给线程2,因为没有同步锁,线程2又把第20条数据add进去了,接着线程2时间到了,轮到线程1,他会接着走他的没走完的那条数据,又会把20add进去,大概就是这个意思,这就是线程不安全和安全的问题,老师说了可以使用同步锁代码块来解决,或者从数据源开始就使用线程暗转的集合
画质可以在播放端调整吧?同学你看看播放器下面是不是可以调一下呢
xy 是function接口中那几种方法的参数,JVM 会根据入参 xy 去找到对应的方法。
3-4 讲到的JDK常见的函数式接口。