java jdk 1.8特性_Java JDK1.8新特性之四大函数式接口

JDK 1.8的一些新特性

四大核心函数式接口(Consumer、Predicate、Supplier、Function),结合lambda表达式

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.function.Function;

import java.util.function.Predicate;

import java.util.function.Supplier;

public class JDk18Demo {

public static void main(String[] args) {

// foreach();

// function();

supplier();

predicate();

}

/**

* Predicate接口:断言接口,断言可理解为测试的意思

* 测试给定字符串列表中哪些字符串包含小写字母m

*/

private static void predicate() {

List list = Arrays.asList("Mikey", "Lily", "Jimy", "Tom");

// 有没有参数取决于接口中的方法有没有参数 boolean test(T t);

List results = filter(list, (str) -> str.contains("m"));

results.forEach(System.out::println);

}

private static List filter(List list, Predicate p) {

List results = new ArrayList<>();

for (String str : list) {

if (p.test(str)) {// 测试是否符合要求

results.add(str);

}

}

return results;

}

/**

* Supplier接口:代表结果供应商

*/

private static void supplier() {

List list = getNums(10, () -> (int) (Math.random() * 100));

list.forEach(System.out::println);

}

// 获取num个随机数,由调用者给出具体实现

private static List getNums(int num, Supplier sup) {

List list = new ArrayList<>();

for (int i = 0; i < num; i++) {

list.add(sup.get());

}

return list;

}

/**

* Function接口:表示接收一个参数并产生结果的函数

*/

private static void function() {

String s = strToUpp("lowercase", (str) -> str.toUpperCase());

System.out.println(s);

}

// 将给定字符串转为大写,由调用者给出具体实现

private static String strToUpp(String str, Function f) {

return f.apply(str);

}

/**

* Consumer接口:消费者接口

* jdk 1.8中的新的迭代方法

*/

private static void foreach() {

List list = new ArrayList<>();

list.add("Tom");

list.add("Mikey");

list.add("Lily");

list.forEach((String s) -> {

System.out.println(s);

});

// 只有一行代码,可简写为

list.forEach(s -> System.out.println(s));

// 进一步可用新语法写为

list.forEach(System.out::println);

}

}

原文:https://www.cnblogs.com/zxfei/p/10904603.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORA-32004: obsolete and/or deprecated parameter(s) specified

From: http://www.cnblogs.com/rootq/archive/2008/10/23/1318290.html 在系统启动的时候,报错 SQL> startup; ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE 例程已经启动。 Total System Global Area 289406976 bytes Fixed Size …

深入react技术栈(7):组件化实例:Tab栏组件

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 文章参考深入React技术栈

mac下怎么清空缓存(缓存并硬性重新加载)

mac下怎么清空缓存&#xff08;缓存并硬性重新加载&#xff09;

记一次曲折的jsp手工半盲注入

作者&#xff1a;YoCo Smart 来自&#xff1a;习科信息技术 ***作战营 ::{ Silic Group Hacker Army }:: site:http://blackbap.org 前些日子&#xff08;似乎很久很久以前&#xff09;&#xff0c;小X在群里发了一个太平洋汽车网站的注入&#xff0c;jsp的&#xff0c;安敏似乎…

团队项目(NABC分析)

我们团队开发的是《校园导航》软件 &#xff08;1&#xff09;N&#xff08;Need需求&#xff09; 我们的团队主要考虑到我们学校没有自己的校园导航&#xff0c;有时会给同学及参观人员带来不便&#xff0c;又看到好多学校都有自己的导航&#xff0c;所以就从这个需求方面想到…

java中为什么要封装_Java中为什么要为基本类型提供封装类呢?

例如int与Integer的区别&#xff1a;int 是基本数据类型Integer是其包装类&#xff0c;注意是一个类。为什么要提供包装类呢&#xff1f;&#xff1f;&#xff1f;一是为了在各种类型间转化&#xff0c;通过各种方法的调用。否则 你无法直接通过变量转化。比如&#xff0c;现在…

python对找到的匹配项作处理后再替换回去

python在对找到的匹配项进行适当处理后&#xff0c;再替换掉原来那个匹配的项。 #!/usr/bin/python # codingGBKimport re# 对m作适当处理后返回结果 def fun(m):print("in: %s" %m.group(0))ret m.group(0).upper()[::-1]return retsrc "what [can] I do for…

linux indent命令: 调整C原始代码文件的格式

linux indent命令: 调整C原始代码文件的格式 介绍: indent命令可辨识C的原始代码文件&#xff0c;并加以格式化&#xff0c;以方便程序员阅读。 语法: indent [参数][源文件] indent [参数][源文件][-o 目标文件] 选项介绍: -bad: 在声明区段或加上空白行。 -bap: 在程…

Linux目录结构介绍-http://yangrong.blog.51cto.com/6945369/1288072

1、树状目录结构图 2、/目录 目录 描述 / 第一层次结构的根、整个文件系统层次结构的根目录。 /bin/ 需要在单用户模式可用的必要命令&#xff08;可执行文件&#xff09;&#xff1b;面向所有用户&#xff0c;例如&#xff1a;cat、ls、cp&#xff0c;和/usr/bin类似。 …

使用Vim+Ctags+Cscope阅读源代码

From: http://blog.csdn.net/jsufcz/article/details/3988883 &#xff0d;&#xff0d;孔建军(Kongove.CN) 2008.11.15 代码阅读工具简介 对于学习Linux内核的人来说&#xff0c;源代码的阅读尤为重要。 因为所有设计思想、内部机制都是以代码的形式实现&#xff0c;所有的…

mysql 和区块链的差别_论区块链是什么数据库——正名篇

区块链是数据库&#xff0c;这句话大家都挑不出毛病。这就好比说&#xff0c;人是一种生物&#xff0c;树是一种生物。这是绝对的真理&#xff0c;同时也是一句废话。mysql是一种数据库&#xff0c;mongodb是一种数据库&#xff0c;leveldb是一种数据库&#xff0c;但是我们在提…

Silverlight 4新控件PivotViewer介绍

早在Silverlight 4正式版发布之前&#xff0c;微软发布PivotViewer控件的演示版本&#xff0c;其处理以及展示大批量数据的功能吸引不少开发人员和终端客户&#xff0c;今天微软发布了PivotViewer控件正式版本&#xff0c;本文将介绍一下PivotViewer控件。首先了解一下PivotVie…

Android add external jar

A Best way to add External Jars to your Anroid Project or any Java project is: Create a folder called ‘libs’ into you project root folderCopy your Jar files to the libs folderNow right click on the Jar file and then select Build Path > Add to Build Pa…

python获取命令行输出结果

python获取命令行输出结果&#xff0c;并对结果进行过滤找到自己需要的&#xff01; 这里以获取本机MAC地址和IP地址为例&#xff01; # coding: GB2312 import os, re# execute command, and return the output def execCmd(cmd):r os.popen(cmd)text r.read()r.close()ret…

mysql 模拟100万数据_教你如何6秒钟往MySQL插入100万条数据的实现

一、思路往MySQL中插入1000000条数据只花了6秒钟&#xff01;关键点&#xff1a;1.使用PreparedStatement对象2.rewriteBatchedStatementstrue 开启批量插入&#xff0c;插入只执行一次&#xff0c;所有插入比较快。二、 代码package test0823.demo1;import java.sql.*;/*** au…

SQL基础-- 数据处理(DML、RETURNING、MERGE INTO)

-- --SQL基础--> 数据处理(DML、RETURNING、MERGE INTO) -- 一、常用的DML语句及事物处理 向表中插入数据(INSERT) 更新表中数据(UPDATE) 从表中删除数据(DELETE) 将表中数据和并(MERGE) 控制事务(TRANSACTION) 二、DML 可以在下列条件下执行: 向表中插入数据 修改现存数据 …

大型网站系统架构实践(四)http层负载均衡之haproxy实践篇(一)

方案 上篇文章讲到了负载均衡的相关理论知识&#xff0c;这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案&#xff1a;haproxy http层负载均衡 安装一个haproxy服务&#xff0c;两个web服务 haproxy&#xff1a;192.168.1.227:80 web1 http://192.168.1.226:8081/login w…