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 ...
随机推荐
- Java String 常用类的使用方法
public static void main(String[] args) { // TODO Auto-generated method stub /* * 使用for循环遍历数组 * int a ...
- myeclipse 8.0 注册码
Subscriber:accptechSubscription Code:nLR8ZC-855550-6765855429037911 Subscriber:Hello World Subscript ...
- Jquery delegate的理解
$(".step4TagList .albumShow", "#divStep4").delegate(" .abmFct .icoRt", ...
- 如何让win32对话框居中显示
在编写win32对话框程序,如果是用visual studio建的win32对话框程序,默认是不居中显示的,about 对话框也是这样的,用资源编辑器打开,可以在属性里面设置居中center 为tur ...
- 九、Node.js中文乱码问题
解决方法: 1.确保我们的js文件保存格式是UTF-8.(可以通过记事本打开,然后另存为来查看目标js的编码格式) 2.在js文件中增加编码说明meta数据,让浏览器知道使用什么编码来解释网页. re ...
- html->head->body
ps:大师兄的博客链接http://www.imdsx.cn/ http://ui.imdsx.cn/html/ html 相当于一个人 css 相当于为这个人穿上漂亮的衣服,化妆 js 相当于 ...
- linux下用rpm 安装jdk
转载自http://blog.csdn.net/ldl22847/article/details/7605650 1.下载jdk的rpm安装包,这里以jdk-7u4-linux-i586.rpm为例进 ...
- 用Hadoop,还是不用Hadoop?
本文由 伯乐在线 - Lex Lian 翻译.英文出处:Anand Krishnaswamy.欢迎加入翻译小组. Hadoop通常被认定是能够帮助你解决所有问题的唯一方案. 当人们提到“大数据”或是“ ...
- 【离散数学】 SDUT OJ 1.1联结词真值运算
1.1联结词真值运算 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知命题变元p和 ...
- 首字母变大写(stringstream的应用)
Problem Description 输入一个英文句子,将每个单词的第一个字母改成大写字母. Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行. O ...