Java8新特性函数式接口
来源:互联网 发布:仿模板天空 源码 编辑:程序博客网 时间:2024/06/06 00:15
package cn.mldn.java8;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//java8四大核心的函数式接口
/*
* Consumer<T>:消费型接口,抽象方法:void accept(T t) 只进不出
* Supplier<T>:供己型接口,抽象方法:T get() 只出不进
* Function<T,R>:函数型接口,抽象方法:R apply(T t) 有进有出
* Predicate<T>:断言型接口 抽象方法:Boolean test(T t) 推断预测
*/
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import org.junit.Test;
public class TestFunctionInterface {
//Consumer<T>消费型接口:
@Test
public void test1()
{
happy(10000, (money)->System.out.println("消费:"+money));
}
public void happy(double money,Consumer<Double> con)
{
con.accept(money);
}
//Supplier<T>:供己型接口
@Test
public void test2()
{
List<Integer> list= getNumberList(10,()->(int)(Math.random()*100));
for(Integer n:list)
{
System.out.print(n+" ");
}
}
//Function<T,R>:函数型接口
//产生指定个数的整数
@Test
public void test3()
{
String str1=strHandler("upper",(str)->str.substring(0,1).toUpperCase()+str.substring(1));
System.out.println(str1);
}
//Predicate<T>:断言型接口
@Test
public void test4()
{
List<String> list=Arrays.asList("json","XML","redis");
List<String> list1=filterStr(list,(str)->str.length()>3);
for(String str:list1)
{
System.out.println(str);
}
}
public List<Integer> getNumberList(int num,Supplier<Integer> sup)
{
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<num;i++)
{
Integer n=sup.get();
list.add(n);
}
return list;
}
//用于处理字符串
public String strHandler(String str,Function<String,String> fun)
{
return fun.apply(str);
}
//将满足条件的字符串,放入集合中
public List<String> filterStr(List<String> list,Predicate<String> pre)
{
List<String> strlist=new ArrayList<String>();
for(String str:list)
{
if(pre.test(str))
strlist.add(str);
}
return strlist;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//java8四大核心的函数式接口
/*
* Consumer<T>:消费型接口,抽象方法:void accept(T t) 只进不出
* Supplier<T>:供己型接口,抽象方法:T get() 只出不进
* Function<T,R>:函数型接口,抽象方法:R apply(T t) 有进有出
* Predicate<T>:断言型接口 抽象方法:Boolean test(T t) 推断预测
*/
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import org.junit.Test;
public class TestFunctionInterface {
//Consumer<T>消费型接口:
@Test
public void test1()
{
happy(10000, (money)->System.out.println("消费:"+money));
}
public void happy(double money,Consumer<Double> con)
{
con.accept(money);
}
//Supplier<T>:供己型接口
@Test
public void test2()
{
List<Integer> list= getNumberList(10,()->(int)(Math.random()*100));
for(Integer n:list)
{
System.out.print(n+" ");
}
}
//Function<T,R>:函数型接口
//产生指定个数的整数
@Test
public void test3()
{
String str1=strHandler("upper",(str)->str.substring(0,1).toUpperCase()+str.substring(1));
System.out.println(str1);
}
//Predicate<T>:断言型接口
@Test
public void test4()
{
List<String> list=Arrays.asList("json","XML","redis");
List<String> list1=filterStr(list,(str)->str.length()>3);
for(String str:list1)
{
System.out.println(str);
}
}
public List<Integer> getNumberList(int num,Supplier<Integer> sup)
{
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<num;i++)
{
Integer n=sup.get();
list.add(n);
}
return list;
}
//用于处理字符串
public String strHandler(String str,Function<String,String> fun)
{
return fun.apply(str);
}
//将满足条件的字符串,放入集合中
public List<String> filterStr(List<String> list,Predicate<String> pre)
{
List<String> strlist=new ArrayList<String>();
for(String str:list)
{
if(pre.test(str))
strlist.add(str);
}
return strlist;
}
}
阅读全文
0 0
- Java8新特性函数式接口
- Java8 新特性 函数式接口
- Java8 新特性之一---------Lambda表达式和函数式接口
- Java8新特性之 函数式接口FunctionalInterface详解
- Java8新特性Lambda表达式、函数式接口
- JAVA8新特性[第二季]-函数式接口
- Java8新特性之四函数式接口
- Java8新特性_四大内置核心函数式接口
- JAVA8新特性之(函数式接口)
- Java8新特性(内置的核心函数式接口)
- [Java]Java8新特性-lambda表达式/语法/函数式接口
- Java8:接口新特性
- 【java8新特性】关于接口
- JAVA8新特性 函数式编程Lambda
- java8新特性 函数式编程 Lamda
- JAVA8新特性(二)——通用函数接口
- JAVA8新特性总结一(接口函数默认实现)
- java8新特性回顾(一)---函数式接口和lamda表达式
- Android6.0以上获取相关权限
- BZOJ 3715: [PA2014]Lustra
- 《算法分析与设计》Week 11
- leetcode.303.Range Sum Query
- 获取屏幕宽高的三种方式
- Java8新特性函数式接口
- 前端基础笔记09
- C语言——数组,函数,指针
- POJ3253 Round Numbers + HDU2089 不要62 —— 数位DP
- hdu 2089 垃圾题目毁我青春
- 堆排序
- unity实现第三视角跟随物体运动
- java8新特性之一:接口的增强
- 问题:京东API接口调用,及搜索接口keyword传值问题