`

Lambda Expressions - Hello World

    博客分类:
  • FP
 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2375461

 

CitiesTest.java

imperative way

declarative way

package chapter1;

import java.util.Arrays;
import java.util.List;

public class CitiesTest {
    private static void findShanghaiImperative(final List<String> cityList) {
        boolean flag = false;
        for (String city : cityList) {
            if (city.equals("Shanghai")) {
                flag = true;
                break;
            }
        }

        System.out.println("Found Shanghai?: " + flag);
    }

    private static void findShanghaiDeclarative(final List<String> cityList) {
        System.out.println("Found Shanghai?: " + cityList.contains("Shanghai"));
    }

    public static void main(String[] args) {
        List<String> cityList = Arrays.asList("Shanghai", "Beijing", "Guangzhou", "Shenzhen");

        findShanghaiImperative(cityList);
        findShanghaiDeclarative(cityList);
    }
}

Console Output


 

PricesTest.java

imperative way

declarative way

package chapter1;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

public class PricesTest {
    private static final List<BigDecimal> priceList = Arrays.asList(
            new BigDecimal("10"), new BigDecimal("30"), new BigDecimal("17"),
            new BigDecimal("20"), new BigDecimal("15"), new BigDecimal("18"),
            new BigDecimal("45"), new BigDecimal("12"));

    private static void discountImperative(final List<BigDecimal> priceList) {
        BigDecimal totalOfDiscountedPrices = BigDecimal.ZERO;

        for (BigDecimal price : priceList) {
            if (price.compareTo(BigDecimal.valueOf(20)) > 0) {
                totalOfDiscountedPrices = totalOfDiscountedPrices.add(price.multiply(BigDecimal.valueOf(0.9)));
            }
        }

        System.out.println("Total of discounted prices: " + totalOfDiscountedPrices);
    }

    private static void discountDeclarative(final List<BigDecimal> priceList) {
        BigDecimal totalOfDiscountedPrices = priceList.stream().filter(price -> price.compareTo(BigDecimal.valueOf(20)) > 0)
                .map(price -> price.multiply(BigDecimal.valueOf(0.9)))
                .reduce(BigDecimal.ZERO, BigDecimal::add);

        System.out.println("Total of discounted prices: " + totalOfDiscountedPrices);
    }

    public static void main(String[] args) {
        discountImperative(priceList);
        discountDeclarative(priceList);
    }
}

Console Output


 

Reference

Pragmatic.Functional.Programming.in.Java.Mar.2014

 

  • 大小: 10.8 KB
  • 大小: 11.3 KB
  • 大小: 15.6 KB
  • 大小: 8.5 KB
  • 大小: 25.1 KB
  • 大小: 22.7 KB
分享到:
评论

相关推荐

    Exa1-HelloWorld其它几种独特方法

    在这个"Exa1-HelloWorld"案例中,我们将探讨几种独特的方法来在C#中输出这句话。 1. **基本方法:Console.WriteLine()** 这是最常见且直观的方式,通过`System`命名空间中的`Console.WriteLine`静态方法打印字符串...

    Kotlin - Kotlin Language Documentation 2.0.0

    ##### Lambda Expressions Lambdas are anonymous functions that can be passed around as values: ```kotlin val numbers = listOf(1, 2, 3) numbers.forEach { number -&gt; println(number) } ``` ##### Classes ...

    Packt.Mastering.Csharp.and.NET.Programming

    - **Introducing Metadata with a Basic HelloWorld**: Demonstrates how metadata is used to store information about types and their members. - **PreJIT, JIT, EconoJIT, and RyuJIT**: - **PreJIT**: ...

    C#3.0本质论-卷一:C#基础

    var message = "Hello, World!"; // message 类型为 string ``` 7. **Lambda 表达式(Lambda Expressions)** - 是一种简洁的表示委托的方法。 - 示例代码: ```csharp Action action = () =&gt; Console....

    C#帮助手册,开发手册

    * Lambda Expressions:C#中的Lambda表达式,包括Lambda表达式的语法、应用等。 C#最新特性 * C# 8.0:C# 8.0中的新特性,包括可空引用类型、default interface methods等。 * C# 7.x:C# 7.x中的新特性,包括 ...

    ProgrammingC#3.0

    var message = "Hello World!"; ``` 8. **查询表达式(Query Expressions)** - 查询表达式是LINQ中一种用于构建复杂查询的语言集成方式。它使得查询更加易于理解和维护。 - 示例: ```csharp var query = from...

    kotlin极简教程.pdf

    Kotlin也支持函数式编程风格,包括高阶函数(higher-order functions)、lambda表达式(lambda expressions)等。 - **高阶函数**:接受函数作为参数或返回函数作为结果的函数。 - **Lambda表达式**:一种简洁地定义...

    C#和Javascript动态执行代码

    string code = "Console.WriteLine(\"Hello, World!\");"; CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerResults results = provider.CompileAssemblyFromSource(new CompilerParameters(), ...

    Haskell趣学指南

    - **Hello, World!**:编写第一个Haskell程序。 - **文件与字符流**:学习如何处理文件输入输出和字符流。 - **命令行引数**:获取和解析命令行输入。 - **乱数**:生成随机数的方法。 - **Byte Strings**:处理字节...

    Python Tricks - A Buffet of Awesome Python Features

    result = greet("World") ``` 这里`name: str`表示`name`参数应该是一个字符串,而`-&gt; str`则指定了函数返回值应该也是字符串类型。 #### 结语 《Python Tricks》这本书通过一系列实用的例子和详细的解释,为读者...

    Xtend User Guide

    例如,"HelloWorld"程序展示了如何在Xtend中编写输出语句,这是学习任何新编程语言的第一步。之后,通过"MoviesExample"示例,引导用户了解如何处理数据、解析数据,并对数据进行一系列查询。 **知识点3:Java互...

    python tricks

    file.write('Hello, World!') # 文件在这里自动关闭 ``` - **属性(Properties)**:这是一种模拟字段访问的方式,可以用来实现更加灵活的数据封装。例如: ```python class Person: def __init__(self, age)...

    C#_接口项目例子

    Action myAction = () =&gt; Console.WriteLine("Hello, World!"); myAction(); // 调用匿名方法 ``` 5. **正则表达式(Regex)**:在项目中,可能有一个或多个方法利用了C#的`System.Text.RegularExpressions`命名空间...

    java函数式编程入门

    public class LambdaExpressions { static Yunzhi yunzhi = x -&gt; "this is a" + x; public static void main(String[] args) { System.out.println(yunzhi.test("test")); } } ``` 总的来说,Java函数式编程...

    python3.6.5参考手册 chm

    PEP 308: Conditional Expressions PEP 309: Partial Function Application PEP 314: Metadata for Python Software Packages v1.1 PEP 328: Absolute and Relative Imports PEP 338: Executing Modules as ...

Global site tag (gtag.js) - Google Analytics