java如何加载lambda_Java 8 lambda表达式引入及简单使用
引入
Help -> EclipseMarketplace -> 搜索Java 8 Kepler ->Java 8 support for eclipse Kepler SR2 安装完成后需要重启
Android Studio
在project的build.gradle文件中添加
buildscript {
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
}
在app的build.gradle文件中添加
apply plugin: 'me.tatarka.retrolambda'
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
使用
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.Stream.Builder;
public class LambdaTest {
public static void main(String[] args) {
String[] str = new String[] { "Lambdas", "Lambdas", "Default Method", "Stream API", "Date and Time API" };
List strList = Arrays.asList(str);
System.out.println("---------------------------->默认遍历");
strList.stream().forEach(item -> {
System.out.println(item);
});
System.out.println("---------------------------->默认遍历简化写法");
strList.stream().forEach(System.out::println);
// limit输出指定个数
System.out.println("limit---------------------------->");
strList.stream().limit(2).forEach(System.out::println);
// 去掉重复数据
System.out.println("distinct---------------------------->");
strList.stream().distinct().forEach(System.out::println);
// filter过滤器,筛选出符合条件的值
System.out.println("filter---------------------------->");
Predicate contain = item -> item.contains("API");// 只是用于匹配条件的如int可以用条件运算符等
strList.stream().filter(contain).forEach(System.out::println);
System.out.println("filter简化写法---------------------------->");
strList.stream().filter(item -> item.contains("API")).forEach(System.out::println);
System.out.println("AND---------------------------->");
Predicate contain1 = item -> item.contains("API");
Predicate contain2 = item -> item.contains("Time");
strList.stream().filter(contain1.and(contain2)).forEach(System.out::println);
System.out.println("OR---------------------------->");
strList.stream().filter(contain1.or(contain2)).forEach(System.out::println);
// 向每个字符后追加
System.out.println("map---------------------------->");
// 对Stream中包含的元素使用给定的转换函数进行转换操作,生成的Stream只包含转换生成的元素。
// mapToInt,mapToLong和mapToDouble是对int、long、double进行操作的
strList.stream().map(item -> item + String.valueOf(1)).forEach(System.out::println);
// 向每个字符后追加
System.out.println("flatMap---------------------------->");
// flatMap:和map类似,不同的是其每个元素转换得到的是Stream对象,会把子Stream中的元素压缩到父集合
strList.stream().flatMap(item -> getCharacter(item)).forEach(System.out::println);
System.out.println("peek---------------------------->");
// peek 需调用collect
strList.stream().map(String::toUpperCase).peek(System.out::println).collect(Collectors.toList());
System.out.println("skip---------------------------->");
// 丢弃原Stream的前N个元素后剩下元素组成的新Stream
strList.stream().skip(3).forEach(System.out::println);
// 统计个数
System.out.println("count---------------------------->" + strList.stream().count());
// allMatch:是不是Stream中的所有元素都满足给定的匹配条件
boolean allMatch1 = strList.stream().allMatch(item -> item.contains("a"));
System.out.println("allMatch-------------->" + allMatch1);
boolean allMatch2 = strList.stream().allMatch(item -> item.contains("API"));
System.out.println("allMatch-------------->" + allMatch2);
// anyMatch:Stream中是否存在任何一个元素满足匹配条件
boolean anyMatch1 = strList.stream().anyMatch(item -> item.contains("Stream API"));
System.out.println("anyMatch-------------->" + anyMatch1);
boolean anyMatch2 = strList.stream().anyMatch(item -> item.contains("Stream API1"));
System.out.println("anyMatch-------------->" + anyMatch2);
// findFirst: 返回Stream中的第一个元素,如果Stream为空,返回空Optional
Optional findFirst = strList.stream().findFirst();
// isPresent方法用来检查Optional实例是否有值。
if (findFirst.isPresent()) {
// 调用get()返回Optional值。如果Optional没有值调和则抛出NoSuchElementException。
System.out.println("findFirst-------------->" + findFirst.get());
}
System.out.print("findFirst简化写法-------------->");
// 如果存在值,则使用该值调用,否则不执行任何操作。
strList.stream().findFirst().ifPresent(System.out::println);
// noneMatch:是不是Stream中的所有元素都不满足给定的匹配条件
boolean noneMatch1 = strList.stream().noneMatch(item -> item.contains("Stream API"));
System.out.println("noneMatch-------------->" + noneMatch1);
boolean noneMatch2 = strList.stream().noneMatch(item -> item.contains("zzzzz"));
System.out.println("noneMatch-------------->" + noneMatch2);
System.out.println("newStrList---------------------------->");
List newStrList = strList.stream().filter(item -> item != null)
.collect(() -> new ArrayList(), (list, item) -> list.add(item), (list1, list2) -> list1.addAll(list2));
newStrList.stream().forEach(System.out::println);
System.out.println("newStrList简化写法---------------------------->");
List newStrList1 = strList.stream().filter(item -> item != null).collect(Collectors.toList());
newStrList1.stream().forEach(System.out::println);
System.out.println("sorted 排序---------------------------->");
// strList.stream().sorted();
strList.stream().sorted(Comparator.comparing(String::length)).forEach(System.out::println);
;
// max和min:使用给定的比较器(Operator),返回Stream中的最大|最小值
Integer[] ints = new Integer[] { 7, 2, 3, 10, 5, 1, 6, 8, 9, 4 };
List intList = new ArrayList();
intList = Arrays.asList(ints);
System.out.print("max-------------->");
intList.stream().max((o1, o2) -> o1.compareTo(o2)).ifPresent(System.out::println);
System.out.print("max简化写法-------------->");
// Comparable Integer.compare(int arg0, int arg1)
intList.stream().max(Integer::compare).ifPresent(System.out::println);
System.out.print("min-------------->");
intList.stream().min((o1, o2) -> o1.compareTo(o2)).ifPresent(System.out::println);
System.out.print("min简化写法-------------->");
// Comparable Integer.compare(int arg0, int arg1)
intList.stream().min(Integer::compare).ifPresent(System.out::println);
System.out.println("reduce单参数---------------------------->");
System.out.println(intList.stream().reduce((result, element) -> result = result + element));
System.out.println("reduce双参数---------------------------->");
System.out.println(intList.stream().reduce(0, (result, element) -> result = result + element));
System.out.println("generate---------------------------->");
// 生成一个无限长度的Stream,其中值是随机的。这个无限长度Stream是懒加载,一般这种无限长度的Stream都会配合Stream的limit()方法来用。
Stream.generate(Math::random).limit(2).forEach(System.out::println);
System.out.println("iterate---------------------------->");
// 也是生成无限长度的Stream,和generator不同的是,其元素的生成是重复对给定的种子值,调用用户指定函数来生成的
Stream.iterate(12, item -> item + 1).limit(2).forEach(System.out::println);
}
public static Stream getCharacter(String s) {
Builder builder = Stream.builder();
builder.add(s);
builder.accept("1");
return builder.build();
}
}
java如何加载lambda_Java 8 lambda表达式引入及简单使用相关推荐
- 用通俗易懂的大白话搞明白Java里的函数式编程和Lambda表达式
今天,用通俗易懂的大白话来彻底搞明白Java里的函数式编程和Lambda表达式 为什么引入函数式编程,lambda表达式? 大家都知道,JDK1.8引入了函数式编程,lambda表达式. 那有没有想过 ...
- IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...
- java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...
Java自定义的类加载器,java自定义加载,在java中类加载器有以 在java中类加载器有以下几种java虚拟机自带的加载器 1)根类加载器(Bootstrap,c++实现)2)扩展类加载器(Ex ...
- java class文件 代码_java_基础——用代码编译.java文件+加载class文件
java_基础--用代码编译.java文件+加载class文件 java_基础--用代码编译.java文件+加载class文件 [简单编译的流程] package com.zjm.www.test; ...
- java配置文件工具类,java项目加载配置文件的工具类
java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...
- 原来热加载如此简单,手动写一个 Java 热加载吧
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...
- java 动态加载jni_JNI静态注册与动态注册详解
JNI注册,是指将java层方法(native关键字修饰的)和C层方法对应起来,以实现java层代码调用c层代码的目的.JNI注册分为静态注册和动态注册两种,静态注册是通过固定格式方法名进行关联,动态 ...
- echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava
[ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...
- java 线程重入,java synchronized加载加锁-线程可重入详解及实例代码
java synchronized加载加锁-线程可重入 实例代码: public class ReGetLock implements Runnable { @Override public void ...
最新文章
- 微信支付通知 php,微信支付开发交易通知实例
- 中国液化石油气(LPG)市场销售现状与竞争发展策略分析报告2022-2028年版
- 与计算机组成原理相关论文题目,计算机组成原理论文
- 用grub4dos修复grub
- 刷新存储器的容量单位是什么_存储系统 半导体存储器
- 递推算法之滚动数组思维方式
- 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
- mysql两个查询结果差集_【Mysql】求两个表(查询结果)的差集
- Maven : maven异常记录-must be unique maven duplicate declaration of version
- 市场上硬杠,技术上死磕,华为如何跨越操作系统黑洞
- matlab简介,Matlab简介及各历史版本
- 乱舞三国java_乱舞三国OL-龙腾四海
- android orientation 代码,android常见错误之Wrong orientation? No orientation specified
- 区块链和人工智能是否可以保护森林不再被砍伐?
- SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法
- VBA--LBound函数与UBound函数用法详解
- 语音识别提取视频文案
- 视频画中画效果制作,原来这么简单就可以做出
- Fusion 360 常见问题
- 【Java类和对象】
热门文章
- linux mint 最新版,Linux Mint安装最新版R
- python大数据项目_(价值1280)大数据项目实战之Python金融应用编程
- 学计算机的管理医生,计算机科学与技术系医学生管理工作体会.pdf
- qt中的纯c语言中项目,2使用QT新建c工程
- 漫画科普:天线的原理?
- python37下载_pythoncom37.dll 3.7.224.0
- 反射在java中的应用_java反射机制在项目中的运用
- 小波相干wtc matlab,实现时间序列的小波相干性分析,并画出图谱
- mysql --skip-locking_skip-external-locking – MySQL性能参数详解
- java match parent_Maven的聚合(多模块)和Parent继承