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

λ表达式和函数式方程

发表于: 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

    震惊

    震惊

编辑推荐
原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antoniolei
一个表达式的逆波兰式可以用如下方法获得: 将表达式写成二叉树的形式,然后将二叉树的节点以中序的
在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构
之前我们都接触了好几种条件判断语句,下面我们来总结一下: 条件判断式: if [ 条件判断式 ]; then
request; response; out ---> JspWriter 可以直接调用 out.println() 方法输出数据; session; ap
函数定义方式 在javascript中,定义一个函数大体上有3种方式: 1.函数申明 2.函数表达式 3.通过 Fun
HTML提供了一些特殊符号与标签可以用来显示数学公式、化学表达式。我们先上效果图: 其代码为: <
函数式编程不得不提到Predicate 何为Predicate? Predicate是来自于Apache Common Framework,内置
函数式编程不得不提到Predicate 何为Predicate? Predicate是来自于Apache Common Framework,内置
http://www.ruanyifeng.com/blog/2012/04/functional_programming.html 诞生50多年之后,函数式编程
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号