Java8常用新特性实践
前言:
时下Oracle开速迭代的Java社区以即将推出Java10,但尴尬的是不少小中企业仍使用JDK7甚至JDK6开发。
从上面列出的JDK8特性中我们可以发现Java8的部分特性很明显的是从Scala借鉴过来,其设计目的只要是为了让代码更精简同时使代码可读性更高。本人在实际项目中比较常用的是3个新特性:
1) forEach()
2) stream()
3) Interface动态创建
以下demo已经过本人亲测,现提供给有需要的朋友!
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Java8常用新特性测试
* @author John
* @date 2018-04-14 21:54
*
*/
public class Java8NewFeature {
public static void main(String[] args) {
System.out.println("*** forEach()新特性 ***");
showForeach();
System.out.println("*** stream()新特性 ***");
showStream();
System.out.println("*** Interface动态创建新特性 ***");
showEasyInterface();
} public static void showForeach() {
Integer numbers[] = { 1, 33, 5 };
List<Integer> numbersList = Arrays.asList(numbers);
numbersList.forEach(System.out::println); } public static void showStream() {
Integer numbers[] = { 1, 33, 5, 100, 2 };
List<Integer> numbersList = Arrays.asList(numbers);
List<String> newNumbers = numbersList.stream()
.filter(num -> (num % 2 == 1)).map(num -> "" + num)
.collect(Collectors.toList());
newNumbers.forEach(System.out::println); int sum = numbersList.stream().reduce((a, b) -> (a + b)).get();
System.out.println("sum = " + sum);
} public static void showEasyInterface() {
Integer numbers[] = { 1, 33, 5 };
List<Integer> numbersList = Arrays.asList(numbers);
Collections.sort(numbersList, (a, b) -> (b - a));
numbersList.forEach(System.out::println); // JDK7实现自定义排序
// Collections.sort(numbersList,new Comparator<Integer>() {
//
// @Override
// public int compare(Integer o1, Integer o2) {
// // TODO Auto-generated method stub
// return o2 - o1;
// }
//
// });
}
}
== 测试输出结果 ==
*** forEach()新特性 ***
1
33
5
*** stream()新特性 ***
1
33
5
sum = 141
*** Interface动态创建新特性 ***
1
5
33
Java8常用新特性实践的更多相关文章
- java8的新特性以及用法简介
1. 介绍 2 接口的默认方法 2 lambda表达式 2.1 函数式接口 2.2 方法与构造函数引用 2.3 访问局部变量 2.4 访问对象字段与静态变量 3. 内建函数式接口 3.1 Predic ...
- Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...
- MySQL5.6 GTID新特性实践
MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...
- 简单了解JAVA8的新特性
JAVA8新特性会颠覆整个JAVA程序员的编程习惯 甚至如果您坚守JAVA7之前的编程习惯,今后你看比较年轻的程序员写的JAVA代码都会无法理解 所以为了保证不脱钩,我觉得有必要学习JAVA8的新特性 ...
- ES6常用新特性
https://segmentfault.com/a/1190000011976770?share_user=1030000010776722 该文章为转载文章!仅个人喜好收藏文章! 1.前言 前几天 ...
- HTML5的常用新特性你必须知道
HTML5的常用新特性你必须知道 1 新的 声明 HTML 有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面.这就是 的用处. 不是 HTML ...
- es6/es7/es8常用新特性总结(超实用)
本文标题有误导性,因为我其实想写node8的新特性,说实话一下子从node v1.x跳跃到node 8.x+ 真有点受宠若惊的感觉.一直觉得node 数组. 对象.序列等的处理没有python方便,因 ...
- ES6、7、8常用新特性总结(超实用)
ES6常用新特性 1. let && const let 命令也用于变量声明,但是作用域为局部 { let a = 10; var b = 1; } 在函数外部可以获取到b,获取不到a ...
- java5、java6、java7、java8的新特性
Java5: 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...
随机推荐
- NET 时间字符串转换
// 把指定格式的日期字符串转换为时间:2018/11/1 0:00:00 DateTime.ParseExact("2018a11","yyyyaMM",Sy ...
- ipad协议7.0,与大佬们分享几套新老版本的协议源码及算法,交流心得。
- 巧用XML配置校验导入Excel的列数据格式
<?xml version="1.0"?> <ColumnsSeting xmlns:xsd="http://www.w3.org/2001/XMLSc ...
- leetcode 两数之和 II - 输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- 用ndp部署storm应用
本文由作者余宝虹授权网易云社区发布. 使用户ndp部署一个Java应用大家都非常熟悉的,但是看到某些同学用非常繁琐的方式部署storm应用的时候,我觉得很有必要整一个帮助教程,ndp帮助文档里面没有, ...
- Day6 ,周期末考试试题
Python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...
- python 使用 response.read() 接收 json 数据
import json result = response.read() result.decode('utf-8') jsonData = json.loads(result)
- 删除 iptables nat 规则
原文:https://www.cnblogs.com/hixiaowei/p/8954161.html 删除FORWARD 规则: iptables -nL FORWARD --line-number ...
- Python廖雪峰学习笔记——单元测试
定义:对一个模块.一个类.一个函数进行进行正确性检验的测试性工作.当我们对函数或者模块等进行修改时,单元测试就显得尤为重要. 单元测试 = 测试用例(用来测试的数据)+测试模块
- 900. RLE Iterator
Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...