Jjava8 Lambda 神操作
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 神操作的更多相关文章
- 可以让你神操作的手机APP推荐 个个都是爆款系列
手机在我们的生活中显得日益重要,根据手机依赖度调查显示,69%的人出门时必带手机,20%的人经常在吃饭睡觉.上卫生间时使用手机:43%的人早上起床第一件事就是查看手机,不用多说,我们对于手机的依赖性越 ...
- 《手把手教你》系列进阶篇之4-python+ selenium自动化测试 - python几种超神操作你都知道吗?(详细教程)
1. 简介 今天分享和讲解的超神操作,对于菜鸟来说是超神的操作,对于大佬来说也就是几个简单方法的封装和调用.这里讲解和分享这部分主要是为了培养小伙伴们和童鞋们的面向对象的开发思维,对比这样做的好处让你 ...
- python神操作将list拉平
python 神操作 将list 拉平 list_of_lists = [[1], [2, 3], [4, 5, 6]]sum(list_of_lists, [])
- 在Python中使用lambda高效操作列表的教程
在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...
- JDK新特性-Lambda表达式的神操作
一.Lambda表达式的介绍 Lambda表达式是 Java8 中最重要的新功能之一.使用 Lambda 表达 式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看 起来更简洁易懂.Lambd ...
- Java8新特性 1——利用流和Lambda表达式操作集合
Java8中可以用简洁的代码来操作集合,比如List,Map,他们的实现ArrayList.以此来实现Java8的充分利用CPU的目标. 流和Lambda表达式都是Java8中的新特性.流可以实现对集 ...
- Java自学-Lambda 聚合操作
java 集合的聚合操作 步骤 1 : 传统方式与聚合操作方式遍历数据 遍历数据的传统方式就是使用for循环,然后条件判断,最后打印出满足条件的数据 for (Hero h : heros) { if ...
- json和字符串/数组/集合的互相转换の神操作总结
一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...
- 用Lambda表达式操作List集合
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
随机推荐
- org.apache.subversion.javahl.ClientException: Previous operation has not finished
1.问题 eclipse使用SVN出现异常: org.apache.subversion.javahl.ClientException: Previous operation has not fini ...
- Alpha 冲刺(1)
Alpha 冲刺 (1/10) Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 ...
- Hessian 使用例子
一.协议包(数据对象需要实现序列化接口,可以用于服务端接口.客户端调用服务之用) /** * */ package com.junge.demo.protocol.model; import java ...
- Transport Layer Protocols
1 End-to-end Protocols(端到端协议) 传输层协议往往是主机对主机(host-to-host)或者说是端到端(end-to-end).通常希望传输层协议可以提供如下service: ...
- Alpha冲刺(5/10)——2019.4.28
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(5/10)--2019.4.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- Android NDK学习(三):Hello World
版权声明:转载请说明出处:http://www.cnblogs.com/renhui/p/6925810.html 首先编写Jni接口的c文件,此文件命名有些特殊,具体的命名方式可以参考文档来做. # ...
- HTML+CSS实现页面豆腐块布局和图片居中
<!DOCTYPE html> <html> <head lang="en"> <meta http-equiv="Conten ...
- Android开发工程师文集-1 小时学会SQLite
前言 大家好,给大家带来Android开发工程师文集-1 小时学会SQLite的概述,希望你们喜欢 内容 什么是Sqlite: 效率高,开源,小型,程序驱动,支持事务操作,无数据类型,可嵌入的关系型数 ...
- 抽取JDBC工具类并增删改查
抽取工具类: package demo; /* * 工具类 */ import java.sql.Connection; import java.sql.DriverManager; import j ...
- 使用node.js + json-server + mock.js 搭建本地开发mock数据服务
在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的.对比过多种mock工具后,我最终选择了使用 json se ...