Collect.java
package constant; import entity.User; import java.util.ArrayList; import java.util.List; /** * @program: java8 * @description: * @author: bugyun * @create: 2018-11-05 10:02 */ public class Collect { public final static List<String> listStr = new ArrayList<>(); public final static List<Integer> listInt = new ArrayList<>(); public final static List<User> listEntiyJapan = new ArrayList<>(); public final static List<User> listEntiyChina = new ArrayList<>(); static { listStr.add("Google"); listStr.add("Facebook"); listStr.add("Microsoft"); listStr.add("IBM"); listStr.add("Yahoo"); ///////////////////////////////////////////// listInt.add(25); listInt.add(21); listInt.add(50); ///////////////////////////////////////////// User one = new User(); one.setId(111); one.setName("tom"); one.setPassword("123456"); User two = new User(); two.setId(122); two.setName("jack"); two.setPassword("123456"); User three = new User(); three.setId(333); three.setName("lisa"); three.setPassword("123456"); listEntiyJapan.add(three); listEntiyJapan.add(one); listEntiyJapan.add(two); //////////////////////////////////////////// User one1 = new User(); one1.setId(9000); one1.setName("zhangsan"); one1.setPassword("123456"); User two1 = new User(); two1.setId(9001); two1.setName("wangwu"); two1.setPassword("123456"); User three1 = new User(); three1.setId(9002); three1.setName("zhaoliu"); three1.setPassword("123456"); listEntiyChina.add(three1); listEntiyChina.add(one1); listEntiyChina.add(two1); } }
User.java
package entity; /** * @program: java8 * @description: * @author: bugyun * @create: 2018-11-05 10:19 */ public class User { private Integer id ; private String name ; private String password ; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}'; } }
StreamMy.java
package lambda; import constant.Collect; import entity.User; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @program: java8 * @description: * @author: bugyun * @create: 2018-11-05 09:59 */ public class StreamMy { public static void main(String[] args) { // long count = count(Collect.listEntiyJapan); // System.out.println(count); // // List<String> collected = listStr("hello", " world ", " honey"); // System.out.println(collected); // // List<String> collectedMap = listMap("hello", " world ", " honey"); // System.out.println(collectedMap); // // List<User> poList = map(Collect.listEntiyJapan); // System.out.println(poList); // // List<User> listTwo = listTwo(Collect.listEntiyChina, Collect.listEntiyJapan); // System.out.println(listTwo); // // String max = max(Collect.listStr); // System.out.println(max); // // Integer min = min(Collect.listInt); // System.out.println(min); // // Integer reduce = reduce(Collect.listInt); // System.out.println(reduce); // // Integer reduce = reduceSum(Collect.listInt); // System.out.println(reduce); Integer reduceParallel = reduceParallel(Collect.listInt); System.out.println(reduceParallel); } /** * 获取集合中id小于300的人数 * @param list * @return */ public static Long count(List<User> list) { Long result = list.stream() .filter(po -> po.getId() < 300) .count(); return result; } /** * collect(toList()) * 方法由 Stream 里的值生成一个列表,是一个及早求值操作。可以理解为 Stream 向 Collection 的转换。 * * @param str * @return */ public static List<String> list(String ... str){ List<String> collected = Stream.of(str) .collect(Collectors.toList()); return collected; } /** * map * 如果有一个函数可以将一种类型的值转换成另外一种类型,map 操作就可以使用该函数,将一个流中的值转换成一个新的流。 * * @param strs * @return */ public static List<String> listMap(String ... strs){ List<String> collected = Stream.of(strs) .map(str -> str.toUpperCase()) .collect(Collectors.toList()); return collected; } /** * map * 如果有一个函数可以将一种类型的值转换成另外一种类型,map 操作就可以使用该函数,将一个流中的值转换成一个新的流。 * * @param list * @return */ public static List<User> map(List<User> list){ List<User> result = list.stream() .filter(po -> po.getId() < 300) .collect(Collectors.toList()); return result; } /** * flatMap * 合并多个 Collection。 * * @param listOne * @param listTwo * @return */ public static List<User> listTwo(List<User> listOne ,List<User> listTwo){ List<User> result = Stream.of(listOne, listTwo) .flatMap(numbers -> numbers.stream()) .collect(Collectors.toList()); return result; } /** * max 返回的是一个 Optional 对象,可能为空。 String的话是按首字母排序的 * * @param list * @return */ public static String max(List<String> list) { String result = list.stream() .max(String::compareTo) // 等同于 (str1, str2) -> str1.compareTo(str2),且都是 String 类型 .get(); return result; } public static Integer min(List<Integer> list) { Integer result = list.stream() .min(Integer::compareTo) .get(); return result; } public static Integer reduce(List<Integer> list) { Integer result = list.stream() .reduce(0, (one, two) -> one + two); return result; } public static Integer reduceSum(List<Integer> list) { Integer result = list.stream() .reduce(0,Integer::sum); return result; } /** * parallel() * * 数据并行化是指将数据分成块,为每块数据分配单独的处理单元 * a. 如果你去计算这段代码所花的时间,很可能比不加上 parallel() 方法花的时间更长 * b. 这是因为数据并行化会先对数据进行分块,然后对每块数据开辟线程进行运算,这些地方会花费额外的时间 * c. 并行化操作只有在 数据规模比较大 或者 数据的处理时间比较长 的时候才能体现出有事 * d. 所以并不是每个地方都需要让数据并行化,应该具体问题具体分析 * @param list * @return */ public static Integer reduceParallel(List<Integer> list) { Integer result = list.stream() .parallel() .reduce(Integer::sum) .get(); return result; } }
相关推荐
官方下载链接:https://download.oracle.com/otn/java/jdk/8u251-b08/3d5a2bb8f8d4428bbe94aed7ec7ae784/jdk-8u251-windows-x64.exe 觉得慢的话可以用txt里百度网盘下载,附件为网盘地址和提取码 jdk8 jdk-8u251-...
1. **Lambda表达式**:这是Java 8最重要的新特性之一,它使得函数式编程成为可能,允许开发者以更简洁的方式处理集合数据。 2. **方法引用和构造器引用**:与Lambda表达式紧密相关,方法引用允许直接引用已有方法,...
本主题涉及两个特定于Linux平台的JDK版本:jdk-8u171-linux-x64.rpm和jdk-8u171-linux-x64.tar.gz。这两个文件分别对应于两种不同的安装方式,适应于不同类型的Linux系统需求。 首先,`jdk-8u171-linux-x64.rpm`是...
1. **Lambda表达式**:这是一种简洁的匿名函数表示方式,简化了多参数、无副作用的函数式编程。 2. **默认方法**:在接口中添加了默认实现,允许接口扩展而不会破坏现有实现。 3. **Stream API**:提供了一种新的...
Java 8是一个广泛使用的版本,引入了许多重要的新特性,如Lambda表达式、函数式编程接口、方法引用来提升代码的简洁性和可读性,以及日期时间API的改进等。 标签“java windows”表明该软件包是为在Windows操作系统...
Java 8是Java的一个重要里程碑,它引入了许多新特性,包括lambda表达式、函数式编程接口、Stream API、日期与时间API的改进以及默认方法等,极大地提升了开发效率和代码可读性。 标签“jdk”进一步确认了这个压缩包...
它引入了多个新特性,包括 Lambda 表达式,这使得函数式编程风格在Java中成为可能。此外,还增加了Stream API,用于处理集合数据的新方式,以及Date和Time API的改进,提供了更强大的日期和时间处理功能。Java 8u172...
1. **Lambda表达式**:这是JDK 8最重要的特性之一,它引入了函数式编程的概念,使得代码更加简洁、可读性强。Lambda表达式允许将匿名函数作为方法参数传递,或者用作方法的返回值。 2. **方法引用和构造器引用**:...
Java 1.8是一个重要的Java版本,它引入了许多新的特性和改进,比如Lambda表达式、函数式编程支持、Stream API、Date和Time API的改进以及更好的并发处理。 在文件名称列表中提到了"jdk-8u181-linux-x64.rpm",这是...
4. **Stream API**:提供了一种处理集合的新方式,支持函数式编程,可以方便地进行数据过滤、映射和聚合操作。 5. **日期和时间API**:弃用了`java.util.Date`和`java.util.Calendar`,引入了新的`java.time`包,...
2.解压 tar -zxvf jdk-8u281-linux-x64.tar.gz 3.配置环境变量:vim /etc/profile 最后添加: export JAVA_HOME=/opt/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$...
标签“jdk8”表明了这是Java 8系列的产品,它是Java语言的一个重大更新,引入了许多新特性,例如Lambda表达式、函数式接口、Stream API、新的日期与时间API(java.time包)、默认方法以及改进的类型推断等。...
Java 8是Java的一个重要版本,它引入了许多新特性,如Lambda表达式、方法引用来增强函数式编程,新的日期/时间API,以及Stream API,极大地提升了代码的简洁性和性能。 压缩包内的文件"jdk-8u251-linux-x64.tar.gz...
Java 8是Oracle公司发布的一个重要版本,引入了许多新特性,如Lambda表达式、函数式编程、Stream API、Date和Time API的改进以及默认方法等。这些特性极大地增强了Java语言的简洁性和效率,使其更适合现代软件开发的...
标题中的"jdk-8u371-windows-x64.exe"指的是Java Development Kit(JDK)的第8个更新版本,具体是8u371,适用于Windows操作系统的64位架构。JDK是Java编程语言的核心工具集,它包含了Java运行环境(JRE)以及开发...
1. **Java语言特性**:如Lambda表达式,这是一种简洁的函数式编程语法,使得处理集合数据更加高效;方法引用来代替匿名内部类,使得代码更简洁。 2. **类型推断**:在编译器可以推断出局部变量类型的场合,允许省略...
标题中的"jdk-8u401-windows-x64.exe"指的是Java Development Kit(JDK)的8u401版本,专为64位Windows操作系统设计。JDK是Java编程语言的核心组件,包含了编译器、调试工具、运行环境等,使开发者能够在本地环境中...
2. **函数式接口**:为了支持lambda,Java 8引入了函数式接口的概念,这类接口只能包含一个抽象方法。`java.util.function`包中提供了大量预定义的函数式接口,如`Predicate`、`Function`和`Consumer`等。 3. **...
1. **Lambda表达式**:这是一种函数式编程概念,允许将代码作为数据处理。它简化了多线程编程,特别是在处理集合时。 2. **方法引用和构造器引用**:这些是与lambda表达式一起使用的语法特性,可以更简洁地引用现有...
1. **Lambda表达式**:Lambda表达式是Java 8最显著的改变,允许程序员以更简洁的方式处理功能性接口,如Comparator或Runnable,使得函数式编程风格更容易实现。 2. **方法引用和构造器引用**:方法引用允许直接引用...