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 ...
随机推荐
- Paper/ Overview | CNN(未完待续)
目录 I. 基础知识 II. 早期尝试 1. Neocognitron, 1980 2. LeCun, 1989 A. 概况 B. Feature maps & Weight sharing ...
- SQL Server CTE 递归查询全解 -- 转 学习
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- 冲刺博客NO.8
今天做了什么: 多天学习后,实现了短信验证的功能,可以选择国家,可以在Mob的后台管理短信验证 遇到的困难: 注册回调事件,afterEvent的判定(事件完成后调用)
- (转载)Linux之虚拟机 rehl7的ip
RHEL7最小化安装之后(桥接模式),我们查看本机IP, ip addr 我们要修改配置文件 找到目录 找到文件(每个人的ifcfg-eno16777736都不同),用vi编辑器打开修改配置文件 保存 ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- Mac通过type-c接口无法识别移动硬盘
最近买了一块移动硬盘以及硬盘盒连接到Mac上来使用,最近发现了一个问题,就是当我使用完后将硬盘推出第二天再次连接上的时候硬盘不能被识别了,连硬盘和上的数据指示灯也不会亮,但是连接的鼠标键盘却没问题 ...
- string Type
Notes from C++ Primer Operations Operations of string support lots of operations of sequential conta ...
- 分布式控制系统Git学习
git : n. 饭桶,无用的人 github : n. 社交编程及代码托管网站 hub: n. 中心:毂:木片 Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创 ...
- C语言中几个常用数学计算函数ceil(), floor(), round()的用法
最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...
- python 输出“Hello, world”
目的:制作第一个项目,输出“Hello, world” 首先查看自己电脑上的python版本号,方法打开cmd输入python 如果提示:不是内部或外部命令,也不是可运行的程序或批处理文件.那么需要设 ...