public class Lambda {

     @FunctionalInterface
public interface AddInter {
void add(int x, long y);
} public interface AddInterTow extends AddInter {
void add(int x, long y);
} ///Predicate 传入apple类型的参数
private static List<Apple> findApple1(List<Apple> appleList, Predicate<Apple> applePredicate) {
ArrayList<Apple> newArrayList = Lists.newArrayList();
for (Apple apple : appleList) {
if (applePredicate.test(apple)) {
newArrayList.add(apple);
}
}
return newArrayList;
} ///Predicate 传入Long类型的参数 一个参数调用括号可以省略
private static List<Apple> findApple2(List<Apple> appleList, Predicate<Long> applePredicate) {
ArrayList<Apple> newArrayList = Lists.newArrayList();
for (Apple apple : appleList) {
if (applePredicate.test(apple.getWeight())) {
newArrayList.add(apple);
}
}
return newArrayList;
} ///两个参数的
private static List<Apple> findApple3(List<Apple> appleList, BiPredicate<String, Long> applePredicate) {
ArrayList<Apple> newArrayList = Lists.newArrayList();
for (Apple apple : appleList) {
if (applePredicate.test(apple.getColor(), apple.getWeight())) {
newArrayList.add(apple);
}
}
return newArrayList;
} ///一个参数的Consumer,accept方法没有返回值 具体干什么你来定
private static void findApple4(List<Apple> appleList, Consumer<Apple> appleConsumer) {
for (Apple apple : appleList) {
appleConsumer.accept(apple);
}
}
///两个参数的
private static void findApple5(String d,List<Apple> appleList, BiConsumer<Apple,String> appleConsumer) {
for (Apple apple : appleList) {
appleConsumer.accept(apple,d);
}
}
private static String findApple6(Apple apple, Function<Apple,String> stringFunction) {
return stringFunction.apply(apple);
} public static void main(String[] args) {
ArrayList<Apple> list = Lists.newArrayList(new Apple("gree", 150L), new Apple("red", 200L), new Apple("blue", 300L));
///Predicate一个参数 || BiPredicate两个参数 || IntPredicate int参数的
List<Apple> apple1 = findApple1(list, (apple) -> apple.getColor().equals("red"));
System.out.println(JSON.toJSONString(apple1));
List<Apple> apple2 = findApple2(list, num -> num > 150L);
System.out.println(JSON.toJSONString(apple2));
List<Apple> apple3 = findApple3(list, (a, b) -> a.equals("red") && b >= 200);
System.out.println(apple3);
System.out.println("==========================================>"); ///Consumer 一个参数的
findApple4(list, a -> System.out.println("{"+a.getColor()+":"+a.getWeight()+"}"));
findApple5("consumer",list,(a,b)-> System.out.println(a.getColor()+":"+a.getWeight()+":"+b));
System.out.println("=======================================>");
///function 传入一个值 返回一个值
String apple6 = findApple6(new Apple("apple", 3000L), (x) -> x.toString());
System.out.println(apple6); IntFunction<Double> apple7 = i->i*20.0d;
System.out.println(apple7.apply(20));
//Predicate || Function ||Supplier || Consumer 常用的几个类 System.out.println("===================================>推导==================");
Consumer<String> consumerString = (s -> System.out.println(s));
consumer(consumerString,"坚持");
consumer(s-> System.out.println(s),"hellword consunmer");
consumer(System.out::println,"system.out.pring"); Integer aaa = Integer.parseInt("12345"); SFunction<String, Integer> stringIntegerSFunction = Integer::parseInt;
Integer integer = stringIntegerSFunction.apply("1234");
System.out.println(integer); BiFunction<String,Long,Apple> biFunction = Apple::new;
Apple biapple = biFunction.apply("biapple", 1000L);
System.out.println(biapple);
} public static <T> void consumer(Consumer<T> consumer,T t){
consumer.accept(t);
consumer.accept(t);
}
public static void LambdaRun() {
SFunction<String, Object> stringObjectSFunction = (String s) -> s.length();
System.out.println(stringObjectSFunction.apply("大傻大傻大傻大傻")); Predicate<Apple> applePredicate = (apple -> apple.getColor().equals("red1"));
System.out.println(applePredicate.test(new Apple("red", 123L))); Supplier<Apple> appleSupplier = Apple::new;
System.out.println(appleSupplier.get()); Runnable run = new Runnable() {
@Override
public void run() {
System.out.println("hello word");
}
};
Runnable runnable = () -> System.out.println("hello word");
startRunnable(runnable);
startRunnable(run);
startRunnable(() -> System.out.println("hello"));
} public static void startRunnable(Runnable runnable) {
runnable.run();
}
}

Jjava8 Lambda 神操作的更多相关文章

  1. 可以让你神操作的手机APP推荐 个个都是爆款系列

    手机在我们的生活中显得日益重要,根据手机依赖度调查显示,69%的人出门时必带手机,20%的人经常在吃饭睡觉.上卫生间时使用手机:43%的人早上起床第一件事就是查看手机,不用多说,我们对于手机的依赖性越 ...

  2. 《手把手教你》系列进阶篇之4-python+ selenium自动化测试 - python几种超神操作你都知道吗?(详细教程)

    1. 简介 今天分享和讲解的超神操作,对于菜鸟来说是超神的操作,对于大佬来说也就是几个简单方法的封装和调用.这里讲解和分享这部分主要是为了培养小伙伴们和童鞋们的面向对象的开发思维,对比这样做的好处让你 ...

  3. python神操作将list拉平

    python 神操作   将list 拉平 list_of_lists = [[1], [2, 3], [4, 5, 6]]sum(list_of_lists, [])

  4. 在Python中使用lambda高效操作列表的教程

    在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...

  5. JDK新特性-Lambda表达式的神操作

    一.Lambda表达式的介绍 Lambda表达式是 Java8 中最重要的新功能之一.使用 Lambda 表达 式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看 起来更简洁易懂.Lambd ...

  6. Java8新特性 1——利用流和Lambda表达式操作集合

    Java8中可以用简洁的代码来操作集合,比如List,Map,他们的实现ArrayList.以此来实现Java8的充分利用CPU的目标. 流和Lambda表达式都是Java8中的新特性.流可以实现对集 ...

  7. Java自学-Lambda 聚合操作

    java 集合的聚合操作 步骤 1 : 传统方式与聚合操作方式遍历数据 遍历数据的传统方式就是使用for循环,然后条件判断,最后打印出满足条件的数据 for (Hero h : heros) { if ...

  8. json和字符串/数组/集合的互相转换の神操作总结

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...

  9. 用Lambda表达式操作List集合

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

随机推荐

  1. 【LOJ6036】 「雅礼集训 2017 Day4」编码

    传送门 LOJ Solution 因为?只有两种可能为0,1,所以就把这两个串搞出来. 那么现在?取0和?取1不能并存,前缀不能并存,所以就是一个\(2-SAT\),现在问题在于这个东西可能会有很多条 ...

  2. firewall 和 iptables 常用命令

    [参考文章]:Centos7 关闭防火墙 [参考文章]:Centos7 firewall防火墙常用配置 CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 ...

  3. 分享一个windows下检测硬件信息的bat脚本

    文件名必须以.bat结尾,如果出现闪退,请右击鼠标,以管理身份运行即可 @echo offcolor 0atitle 硬件检测 mode con cols=90sc config winmgmt st ...

  4. Liferay7 BPM门户开发之5: Activiti和Spring集成

    参考文档: https://github.com/jbarrez/spring-boot-with-activiti-examplehttps://github.com/sxyx2008/spring ...

  5. Django model update的各种用法介绍

    Django开发过程中对表(model)的增删改查是最常用的功能之一,本文介绍笔者在使用model update过程中遇到的那些事 model update常规用法 假如我们的表结构是这样的 clas ...

  6. oracle生成AWR报告方法

    2018-04-02 19:59:42 在10g 11g中AWR自动的每隔一小时进行一次数据采集并生成快照.下面是生成AWR报告的步骤: 1:使用oracle用户在数据库服务器上执行如下命令 sqlp ...

  7. python之排序算法

    排序是每个语言都需要学会的,不管是c++.java还是python,套路都是类似的 python中也有自带的排序函数sort,直接使用也可 闲来无事写了几个排序算法,各不相同 1.每次遇到最小的数都交 ...

  8. Nginx+apache/Tomcat实现反向代理与动静分离

    其实本人比较喜欢nginx跑静态和做负载反向代理,动态php还是交给apache处理比较稳定,jsp就交给tomcat.resin或jboss.nginx跑静态的能力是无与伦比的,是目前web服务器里 ...

  9. odoo开发笔记 -- 搜索视图继承扩展

    odoo开发笔记 -- 搜索视图继承扩展

  10. oracle10g和oracle11g导入导出数据区别

    其中flxuser为用户名,flxuser为密码,file值为导入到数据库中的备份文件. oracle10g和oracle11g导入导出数据的命令方式大有不同: oracle10g导入数据: imp  ...