自定义一个函数式接口,提供方法将字符串转为数字,抽象方法toNum。
package com.briup.day24;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class LambdaTest4{
public static void main(String[] args) {
LambdaTest4 test=new LambdaTest4();
test.method();
Num num2=(str)->Integer.valueOf(str.charAt(0));
System.out.println(num2.toNum("b"));
String s="briup";
for (int i = 0; i < s.length(); i++) {
char c=s.charAt(i);
Num2 num3=(str)->Integer.valueOf(c);
System.out.print(num3.toNum(c)+"\t");
}
System.out.println();
test.method3();
test.method4();
}
}
使用Lambda表达式,实现一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中,然后进行遍历输出。
public void method() {
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
while (list.size() < 20) {
int random = (int) (Math.random() * 100 + 1);
list.add(random);
}
list.forEach((i)->{
if(i%2==0) {
list2.add(i);
}
});
list2.forEach((i)->{
System.out.print(i+"\t");
});
System.out.println();
}
声明函数式接口,接口中声明抽象方法,public String getValue(String str);声明类TestLambda,类中编写方法使用接口作为参数,将每一个字符串转换成大写,并作为方法的返回值,再将一个字符串的第2个和第4个索引位置进行截取子串。
public void method3() {
String upper = strHandler("briup123java后端chouhan",(str)->str.toUpperCase());
System.out.println(upper);
String substr = strHandler("31程序员javabriup",(str)->str.substring(2, 5));
System.out.println(substr);
String newstr=strHandler("xgchouhan123", (str)->str.toUpperCase().substring(2, 5));
System.out.println(newstr);
}
public String strHandler(String str,MyFuction mf){
return mf.getValues(str);
}
使用Predicate接口,String[] arr={“卢本伟,男”,“五五开,女”,“white,男”};把三个字的,性别为男的存到一个集合中。
public static List<String> test(String[] arr,
Predicate<String> pr1,Predicate<String> pr2){
List<String> list=new ArrayList<String>();
for (String string : arr) {
if(pr1.and(pr2).test(string)) {
list.add(string);
}
}
return list;
};
public void method4() {
String[] arr={"卢本伟,男","五五开,女","white,男"};
List<String> list = test(arr,(t)-> t.split("[,]")[0].length()==3,
(t)-> t.split("[,]")[1].equals("男"));
list.forEach(s->System.out.println(s));
}
}
@FunctionalInterface
interface Num{
public abstract int toNum(String str);
}
interface Num2{
public abstract int toNum(char c);
}
interface MyFuction{
public String getValues(String str);
}