引入

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表达式引入及简单使用相关推荐

  1. 用通俗易懂的大白话搞明白Java里的函数式编程和Lambda表达式

    今天,用通俗易懂的大白话来彻底搞明白Java里的函数式编程和Lambda表达式 为什么引入函数式编程,lambda表达式? 大家都知道,JDK1.8引入了函数式编程,lambda表达式. 那有没有想过 ...

  2. IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)

    晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...

  3. java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...

    Java自定义的类加载器,java自定义加载,在java中类加载器有以 在java中类加载器有以下几种java虚拟机自带的加载器 1)根类加载器(Bootstrap,c++实现)2)扩展类加载器(Ex ...

  4. java class文件 代码_java_基础——用代码编译.java文件+加载class文件

    java_基础--用代码编译.java文件+加载class文件 java_基础--用代码编译.java文件+加载class文件 [简单编译的流程] package com.zjm.www.test; ...

  5. java配置文件工具类,java项目加载配置文件的工具类

    java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...

  6. 原来热加载如此简单,手动写一个 Java 热加载吧

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

  7. java 动态加载jni_JNI静态注册与动态注册详解

    JNI注册,是指将java层方法(native关键字修饰的)和C层方法对应起来,以实现java层代码调用c层代码的目的.JNI注册分为静态注册和动态注册两种,静态注册是通过固定格式方法名进行关联,动态 ...

  8. echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava

    [ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...

  9. java 线程重入,java synchronized加载加锁-线程可重入详解及实例代码

    java synchronized加载加锁-线程可重入 实例代码: public class ReGetLock implements Runnable { @Override public void ...

最新文章

  1. 微信支付通知 php,微信支付开发交易通知实例
  2. 中国液化石油气(LPG)市场销售现状与竞争发展策略分析报告2022-2028年版
  3. 与计算机组成原理相关论文题目,计算机组成原理论文
  4. 用grub4dos修复grub
  5. 刷新存储器的容量单位是什么_存储系统 半导体存储器
  6. 递推算法之滚动数组思维方式
  7. 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
  8. mysql两个查询结果差集_【Mysql】求两个表(查询结果)的差集
  9. Maven : maven异常记录-must be unique maven duplicate declaration of version
  10. 市场上硬杠,技术上死磕,华为如何跨越操作系统黑洞
  11. matlab简介,Matlab简介及各历史版本
  12. 乱舞三国java_乱舞三国OL-龙腾四海
  13. android orientation 代码,android常见错误之Wrong orientation? No orientation specified
  14. 区块链和人工智能是否可以保护森林不再被砍伐?
  15. SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法
  16. VBA--LBound函数与UBound函数用法详解
  17. 语音识别提取视频文案
  18. 视频画中画效果制作,原来这么简单就可以做出
  19. Fusion 360 常见问题
  20. 【Java类和对象】

热门文章

  1. linux mint 最新版,Linux Mint安装最新版R
  2. python大数据项目_(价值1280)大数据项目实战之Python金融应用编程
  3. 学计算机的管理医生,计算机科学与技术系医学生管理工作体会.pdf
  4. qt中的纯c语言中项目,2使用QT新建c工程
  5. 漫画科普:天线的原理?
  6. python37下载_pythoncom37.dll 3.7.224.0
  7. 反射在java中的应用_java反射机制在项目中的运用
  8. 小波相干wtc matlab,实现时间序列的小波相干性分析,并画出图谱
  9. mysql --skip-locking_skip-external-locking – MySQL性能参数详解
  10. java match parent_Maven的聚合(多模块)和Parent继承