stream4
import java.util.Comparator;
import java.util.function.BinaryOperator; public class BinaryOperatorTest { public static void main(String[] args) {
BinaryOperatorTest binaryOperatorTest = new BinaryOperatorTest(); System.out.println(binaryOperatorTest.compute(1, 2, (a, b) -> a + b));
System.out.println(binaryOperatorTest.compute(1, 2, (a, b) -> a - b)); System.out.println("----------"); System.out.println(binaryOperatorTest.getMax("hello123", "world", (a, b) -> a.length() - b.length()));
System.out.println(binaryOperatorTest.getMax("hello123", "world", (a, b) -> a.charAt(0) - b.charAt(0))); } public int compute(int a, int b, BinaryOperator<Integer> binaryOperator) {
return binaryOperator.apply(a, b);
} public String getMax(String a, String b, Comparator<String> comparator) {
return BinaryOperator.maxBy(comparator).apply(a, b);
}
}
import java.util.List; public class Company { private String name; private List<Employee> employees; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Employee> getEmployees() {
return employees;
} public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
public class Employee { private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
import java.util.function.Function; public class FunctionTest { public static void main(String[] args) {
FunctionTest test = new FunctionTest(); System.out.println(test.compute(1, value -> {
return 2 * value;
})); System.out.println(test.compute(2, value -> 5 + value));
System.out.println(test.compute(3, value -> value * value)); System.out.println(test.convert(5, value -> String.valueOf(value + " hello world"))); System.out.println(test.method1(2)); Function<Integer, Integer> function = value -> value * 2; System.out.println(test.compute(4, function));
} public int compute(int a, Function<Integer, Integer> function) {
int result = function.apply(a); return result;
} public String convert(int a, Function<Integer, String> function) {
return function.apply(a);
} public int method1(int a) {
return 2 * a;
}
}
import java.util.function.BiFunction;
import java.util.function.Function; public class FunctionTest2 { public static void main(String[] args) {
FunctionTest2 test = new FunctionTest2(); System.out.println(test.compute(2, value -> value * 3, value -> value * value)); //
System.out.println(test.compute2(2, value -> value * 3, value -> value * value)); // System.out.println(test.compute3(1, 2, (value1, value2) -> value1 + value2));
System.out.println(test.compute3(1, 2, (value1, value2) -> value1 - value2));
System.out.println(test.compute3(1, 2, (value1, value2) -> value1 * value2));
System.out.println(test.compute3(1, 2, (value1, value2) -> value1 / value2)); System.out.println(test.compute4(2, 3, (value1, value2) -> value1 + value2, value -> value * value)); //
} public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {
return function1.compose(function2).apply(a);
} public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {
return function1.andThen(function2).apply(a);
} public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> biFunction) {
return biFunction.apply(a, b);
} public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction,
Function<Integer, Integer> function) {
return biFunction.andThen(function).apply(a, b);
}
}
import java.util.Optional; public class OptionalTest { public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable("hello"); // if(optional.isPresent()) {
// System.out.println(optional.get());
// } // optional.ifPresent(item -> System.out.println(item)); //推荐的Optional使用方式
// System.out.println("-------"); optional = Optional.empty(); // System.out.println(optional.orElse("world"));
// System.out.println("---------"); optional = Optional.empty(); System.out.println(optional.orElseGet(() -> "nihao"));
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional; public class OptionalTest2 { public static void main(String[] args) {
Employee employee = new Employee();
employee.setName("zhangsan"); Employee employee2 = new Employee();
employee2.setName("lisi"); Company company = new Company();
company.setName("company1"); List<Employee> employees = Arrays.asList(employee, employee2);
// company.setEmployees(employees); Optional<Company> optional = Optional.ofNullable(company); System.out.println(optional.map(theCompany -> theCompany.getEmployees()).
orElse(Collections.emptyList()));
}
}
import java.util.function.Predicate; public class PredicateTest { public static void main(String[] args) { Predicate<String> predicate = p -> p.length() > 5; System.out.println(predicate.test("hello1"));
}
}
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.function.Predicate; public class PredicateTest2 { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); PredicateTest2 predicateTest2 = new PredicateTest2(); predicateTest2.conditionFilter(list, item -> item % 2 == 0);
System.out.println("---------"); predicateTest2.conditionFilter(list, item -> item % 2 != 0);
System.out.println("---------"); predicateTest2.conditionFilter(list, item -> item > 5);
System.out.println("---------"); predicateTest2.conditionFilter(list, item -> item < 3);
System.out.println("---------"); predicateTest2.conditionFilter(list, item -> true);
System.out.println("---------"); predicateTest2.conditionFilter(list, item -> false);
System.out.println("---------"); predicateTest2.conditionFilter2(list, item -> item > 5, item -> item % 2 == 0);
System.out.println("---------"); Date d = new Date(); System.out.println(predicateTest2.isEqual(d).test(d));
} public void conditionFilter(List<Integer> list, Predicate<Integer> predicate) {
for(Integer integer : list) {
if(predicate.test(integer)) {
System.out.println(integer);
}
}
} public void conditionFilter2(List<Integer> list, Predicate<Integer> predicate,
Predicate<Integer> predicate2) {
for(Integer integer : list) {
if(predicate.and(predicate2).negate().test(integer)) {
System.out.println(integer);
}
}
} public Predicate<Date> isEqual(Object object) {
return Predicate.isEqual(object);
} // 寻找所有偶数,传统方式
public void findAllEvens(List<Integer> list) {
for(Integer integer : list) {
if(integer % 2 == 0) {
System.out.println(integer);
}
}
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class StringComparator { public static void main(String[] args) { List<String> names = Arrays.asList("zhangsan", "lisi", "wangwu", "zhaoliu"); // Collections.sort(names, new Comparator<String>() {
// @Override
// public int compare(String o1, String o2) {
// return o2.compareTo(o1);
// }
// });
//
// System.out.println(names); // expression o2.compareTo(o1)
// statement {return o2.compareTo(o1);} // Collections.sort(names, (o1, o2) -> { return o2.compareTo(o1); }); Collections.sort(names, (o1, o2) -> o2.compareTo(o1)); System.out.println(names);
}
}
public class Student { private String name = "zhangsan"; private int age = 20; public Student() { } public Student(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
import java.util.function.Supplier; public class StudentTest { public static void main(String[] args) {
// Supplier<Student> supplier = () -> new Student();
// System.out.println(supplier.get().getName());
//
// System.out.println("-------"); Supplier<Student> supplier2 = Student::new;
System.out.println(supplier2.get().getName());
}
}
import java.util.function.Supplier; public class SupplierTest { public static void main(String[] args) {
Supplier<String> supplier = () -> "hello world";
System.out.println(supplier.get());
}
}
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer; public class Test1 { public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
} System.out.println("---------------"); for(Integer i : list) {
System.out.println(i);
} System.out.println("---------------"); for(Iterator<Integer> iter = list.iterator(); iter.hasNext();) {
System.out.println(iter.next());
} System.out.println("---------------"); list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
}); System.out.println("---------------"); list.forEach((Integer i) -> System.out.println(i)); System.out.println("---------------"); list.forEach(i -> System.out.println(i)); System.out.println("---------------"); list.forEach(System.out::println); Consumer<Integer> consumer = i -> System.out.println(i); Runnable r = () -> {}; new Thread(() -> {
System.out.println("hello world");
}).start(); new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hello world2");
}
}).start();
}
}
@FunctionalInterface
interface MyInterface { void test(); // 取消如下方法注释,该接口是否还是函数式接口
// String toString();
} public class Test2 { public void myTest(MyInterface myInterface) {
System.out.println(1);
myInterface.test();
System.out.println(2);
} public static void main(String[] args) {
Test2 test2 = new Test2(); test2.myTest(() -> {
System.out.println("mytest");
}); System.out.println("----------"); MyInterface myInterface = () -> {
System.out.println("hello");
}; System.out.println(myInterface.getClass());
System.out.println(myInterface.getClass().getSuperclass());
System.out.println(myInterface.getClass().getInterfaces()[0]);
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function; public class Test3 { public static void main(String[] args) { // TheInterface i1 = () -> {};
// System.out.println(i1.getClass().getInterfaces()[0]);
//
// TheInterface2 i2 = () -> {};
// System.out.println(i2.getClass().getInterfaces()[0]); // new Thread(() -> System.out.println("hello world")).start();
//
List<String> list = Arrays.asList("hello", "world", "hello world"); // list.forEach(item -> System.out.println(item.toUpperCase()));
//
List<String> list2 = new ArrayList(); // list.forEach(item -> list2.add(item.toUpperCase()));
// list2.forEach(item -> System.out.println(item));
//
// list.stream().map(item -> item.toUpperCase()).forEach(item -> System.out.println(item)); // list.stream().map(String::toUpperCase).forEach(item -> System.out.println(item));
//
Function<String, String> function = String::toUpperCase;
System.out.println(function.getClass().getInterfaces()[0]);
}
} @FunctionalInterface
interface TheInterface { void myMethod();
} @FunctionalInterface
interface TheInterface2 { void myMethod2();
}
stream4的更多相关文章
- snort使用
http://jingyan.baidu.com/article/d8072ac45a626fec95cefd85.html 接上篇,如果编译安装snort并指定了prefix,那么须指定一个软链接, ...
- Java 8怎么了之二:函数和原语
[编者按]本文作者为专注于自然语言处理多年的 Pierre-Yves Saumont,Pierre-Yves 著有30多本主讲 Java 软件开发的书籍,自2008开始供职于 Alcatel-Luce ...
- 复合文档的二进制存储格式研究[ole存储结构](word,xls,ppt...)[转]
复合文档文件格式研究 前 言 复合文档(Compound Document) 是一种不仅包含文本而且包括图形.电子表格数据.声音.视频图象以及其它信息的文档.可以把复合文档想象成一个所有者,它装着 ...
- RFC2889转发性能測试用例设计和自己主动化脚本实现
一.203_TC_FrameRate-1.tcl set chassisAddr 10.132.238.190 set islot 1 set portList {9 10} ;#端口的排列顺序是po ...
- 流API--流的基础知识
流接口--BaseStream接口 流API定义了几个流接口,这些接口包含在java.util.stream中.BaseStream是基础接口,它定义了所有流都可以使用的基本功能.我们来看一下源码: ...
- 流API--初体验
在JDK8新增的许多功能中,有2个功能最重要,一个是Lambda表达式,一个是流API.Lambda表达式前面我已经整理过了,现在开始整理流API.首先应该如何定义流API中的"流" ...
- java8完全解读二
继续着上次的java完全解读一 继续着上次的java完全解读一1.强大的Stream API1.1什么是Stream1.2 Stream操作的三大步骤1.2.1 创建Stream1.2.2 Strea ...
- QUIC协议原理分析(转)
之前深入了解了一下HTTP1.1.2.0.SPDY等协议,发现HTTP层怎么优化,始终要面对TCP本身的问题.于是了解到了QUIC,这里分享一篇之前找到的有意义的文章. 原创地址:https://mp ...
- Java 8 Stream介绍及使用1
(原) stream的内容比较多,先简单看一下它的说明: A sequence of elements supporting sequential and parallel aggregate * o ...
随机推荐
- EasyUI combobox实现下拉框多选遇坑记录
场景一: 多选正常从第二个选项增加逗号,我选第一个的时候就冒出一个逗号 解决方案一: 这是因为当前的下拉框的值可能为undefined,需要手动清空一下 $("#id").comb ...
- <%@ include > 与< jsp:include >
include指令表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的文本静态地包含过去.也就是说,会把被包含的页面拷贝到包含的页面中指令所在的位置. 语法格式:<%@ include ...
- 替归算法获取Treeview所有节点
treeview.nodes是获取下一级所有子节点,但是如果是多层的话,就不能,想个法子来获取所有的节点(含节点的子节点),想了想 还是替归算法比较方便,如是有了下面的代码 public static ...
- 分享我的第一个asp.net core开发过程
.net core 这个东西感觉还是很不错的,学习了一下,并且做了一个微服务(IP地址查询服务) http://vju.cc/ip/ipquery 看上他的跨平台功能,所以就研究一下,中间有不少坑,有 ...
- 六、Note开发工具Visual Studio Code下载安装以及Visual Studio Code的使用
专业的人干专业的事,我们搞Node总不能真的使用文本编辑器傻乎乎的搞吧,文本编辑器来开发Node程序,效率太低,运行Node程序还需要在命令行单独敲命令.如果还需要调试程序,就更加麻烦了.所以我们需要 ...
- windows下安装newman
1.下载安装node.js,下载地址::https://nodejs.org/en/download/,这里我下载的为v10.15.0-x64.msi,下载后直接安装即可,安装完后可输入node -v ...
- 「BZOJ 3123」「SDOI 2013」森林「启发式合并」
题意 你有一个森林,你需要支持两个操作 查询两个结点路径上权值第\(k\)小 两个点之间连一条边 强制在线,结点数\(\leq 8\times 10^4\) 题解 如果可以离线,这就是一个主席树板子题 ...
- 趣图:快下班了,剩一个bug,修复一下再走
趣图:当我给老板展示我修复了那个 bug 时 趣图:当我以为这是最后一个Bug时……
- leecode刷题(1)-- 删除排序数组中的重复项
删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的 ...
- 二分查找法C语言实现
[问题描述] 生成一个随机数组A[64] ,在数组中查找是否存在某个数num. [答案] #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> ...