当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

λ表达式和函数式方程

发表于: 2015-02-22   作者:永夜-极光   来源:转载   浏览:
摘要: 惊叹于λ表达式的简洁和优美,在这里也分享一下使用心得.   目标程序:使一个容器内的String类型的数据1.长度不能超过5   2.全部变成大写 注意:这份代码导入了外部扩展的jar包,是google的guava包,需要的请去百度下载. 一般的程序代码: package s0222函数式编程; import java.util.Collection;

惊叹于λ表达式的简洁和优美,在这里也分享一下使用心得.

 

目标程序:使一个容器内的String类型的数据1.长度不能超过5   2.全部变成大写

注意:这份代码导入了外部扩展的jar包,是google的guava包,需要的请去百度下载.

一般的程序代码:

package s0222函数式编程;
import java.util.Collection;
import java.util.List;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;

public class Main {
	public static void  main(String [] args){

        //创建容器,存放String类型数据
         List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd");
		 
        //函数f1,控制容器内元素长度小于等于5,用了匿名内部类
        Function<String,String> f1=new Function<String,String>()
        {
			public String apply(String input) 
			{return input.length()>5?input.substring(0, 5):input;}
        };
        //函数f2,将元素转换成大写,用了匿名内部类
        Function<String,String> f2=new Function<String,String>()
        {
			public String apply(String input) 
		    {return input.toUpperCase();}
        };
            
        //组合函数f1,和函数f2
        Function<String,String> f=Functions.compose(f1, f2);
        //函数式编程
		Collection<String> list3= Collections2.transform(list2, f);
		//增强for循环,输出容器内每个元素
		for(String temp:list3)
			System.out.println(temp);

}}

 

运用了λ表达式的代码:

package s0222函数式编程;
import java.util.Collection;
import java.util.List;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;

public class Main {
	public static void  main(String [] args){
        //创建容器,存放String类型的数据
         List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd");	 
        //lambda表达式,函数f1,控制容器内元素长度小于等于5
        Function<String,String> f1=(input)->input.length()>5?input.substring(0, 5):input;
        //lambda表达式,函数f1,将元素转换成大写
        Function<String,String> f2=(input)->input.toUpperCase();                      
        //组合函数f1,和函数f2
        Function<String,String> f=Functions.compose(f1, f2);
        //函数式编程
		Collection<String> list3= Collections2.transform(list2, f);
		//输出每个元素
		list3.forEach(name->System.out.println(name) );
	}

}

 

 

我们将核心代码部分抽取出来,去掉注释,对比会更明显.

1.普通代码

        List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd");    
        Function<String,String> f1=new Function<String,String>()
        {
			public String apply(String input) 
			{return input.length()>5?input.substring(0, 5):input;}
        };
        
        Function<String,String> f2=new Function<String,String>()
        {
			public String apply(String input) 
		    {return input.toUpperCase();}
        };
     
        Function<String,String> f=Functions.compose(f1, f2);
		Collection<String> list3= Collections2.transform(list2, f);
		for(String temp:list3)  System.out.println(temp);

 2.运用λ表达式

        List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd");	 
        Function<String,String> f1=(input)->input.length()>5?input.substring(0, 5):input;
        Function<String,String> f2=(input)->input.toUpperCase();                      
        Function<String,String> f=Functions.compose(f1, f2);
		Collection<String> list3= Collections2.transform(list2, f);
		list3.forEach(name->System.out.println(name) );

 

可以看到,运用λ表达式可以极大的简化代码,增强可读性!!

λ表达式可以简化1.只有一个方法的匿名内部类

                           2.遍历数组

 

 

另外,监听器对象也能运用lambda表达式

 button.addActionListener((e) -> System.out.println("Hello") );    
   

λ表达式和函数式方程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号