今天学习了的主要内容:
1.什么是Lambda表达式
2.Lambda表达式的第一次使用
Lambda表达式:
Lambda表达式是一个没有名称但是有形式参数列表和实现体的代码块
Lambda表达式可以作为方法的参数或者赋值给一个变量
Lambda表达式自身没有类型,编译器根据环境可以推断它的类型
Lambda表达式时函数式编程的一种体现
如:
(int x)->x+1;
(int x,int y)->{int max = x>y?x:y;
return max;//在大括号中的话语句要加分号
}
LambdaTest01类(主测试类):
package LessonForLambda01;
//定义一个策略接口作为参数传入方法,由此来获得更多的方法可拓展性
interface Sumable
{
public boolean judge(int a);
}
public class LambdaTest01
{
//获取数组中所有元素的和
public static int getSum(int[] array1)
{
int result = 0;
for (int a:array1)
{
result += a;
}
return result;
}
//获取数组中所有偶数的和
public static int getEvenNumberSum(int[] array1)
{
int result = 0;
for (int a:array1)
{
if (a%2 == 0)
{
result += a;
}
}
return result;
}
//获取数组中所有七的倍数的和
public static int getSevenMultiNumberSum(int[] array1)
{
int result = 0;
for (int a:array1)
{
if (a%7 == 0)
{
result += a;
}
}
return result;
}
public static int getNumberSumCommon(int[] array, Sumable s)
{
int result = 0;
for (int a:array)
{
if (s.judge(a))
{
result += a;
}
}
return result;
}
public static void main(String[] args)
{
System.out.println("我们将方法的策略在主函数中实现,那么就可以写一个方法来调用不同策略来满足计算要求。");
System.out.println("增加了方法的可扩展性。");
System.out.println("策略模式的运用。");
//我们将方法的策略在主函数中实现,那么就可以写一个方法来调用不同策略来满足计算要求。
//增加了方法的可扩展性。
//策略模式的运用。
int[] array = {1,2,3,4,5,6,7,8,9,10};
int result1 = LambdaTest01.getNumberSumCommon(array, new Sumable()
{
@Override
public boolean judge(int a)
{
return true;
}
});
System.out.println("数组中所有元素之和:"+result1);
int result2 = LambdaTest01.getNumberSumCommon(array, new Sumable()
{
@Override
public boolean judge(int a)
{
return (a%2 == 0);
}
});
System.out.println("数组中所有偶数之和:"+result2);
int result3 = LambdaTest01.getNumberSumCommon(array, new Sumable()
{
@Override
public boolean judge(int a)
{
return (a%7 == 0);
}
});
System.out.println("数组中所有7的倍数之和:"+result3);
System.out.println("----------------------");
//开始进一步改进方法。
System.out.println("开始进一步改进方法。");
int result4 = LambdaTest01.getNumberSumCommon(array, (a)->true);
System.out.println("数组中所有元素之和:"+result4);
result4 = LambdaTest01.getNumberSumCommon(array, (a)->(a%2 == 0));
System.out.println("数组中所有偶数之和:"+result4);
result4 = LambdaTest01.getNumberSumCommon(array, (a)->(a%7 == 0));
System.out.println("数组中所有7的倍数之和:"+result4);
}
}
部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。
2020.10.14
可以转载我的学习日记但请注明出处,谢谢。
毕