JAVA学习日记: Lambda表达式(1)

今天学习了的主要内容:

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
可以转载我的学习日记但请注明出处,谢谢。
毕

猜你喜欢

转载自blog.csdn.net/SIESTA030/article/details/109138417