原创转载请注明出处: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
相关推荐
在这个"Exa1-HelloWorld"案例中,我们将探讨几种独特的方法来在C#中输出这句话。 1. **基本方法:Console.WriteLine()** 这是最常见且直观的方式,通过`System`命名空间中的`Console.WriteLine`静态方法打印字符串...
##### Lambda Expressions Lambdas are anonymous functions that can be passed around as values: ```kotlin val numbers = listOf(1, 2, 3) numbers.forEach { number -> println(number) } ``` ##### Classes ...
- **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**: ...
var message = "Hello, World!"; // message 类型为 string ``` 7. **Lambda 表达式(Lambda Expressions)** - 是一种简洁的表示委托的方法。 - 示例代码: ```csharp Action action = () => Console....
* Lambda Expressions:C#中的Lambda表达式,包括Lambda表达式的语法、应用等。 C#最新特性 * C# 8.0:C# 8.0中的新特性,包括可空引用类型、default interface methods等。 * C# 7.x:C# 7.x中的新特性,包括 ...
var message = "Hello World!"; ``` 8. **查询表达式(Query Expressions)** - 查询表达式是LINQ中一种用于构建复杂查询的语言集成方式。它使得查询更加易于理解和维护。 - 示例: ```csharp var query = from...
Kotlin也支持函数式编程风格,包括高阶函数(higher-order functions)、lambda表达式(lambda expressions)等。 - **高阶函数**:接受函数作为参数或返回函数作为结果的函数。 - **Lambda表达式**:一种简洁地定义...
string code = "Console.WriteLine(\"Hello, World!\");"; CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerResults results = provider.CompileAssemblyFromSource(new CompilerParameters(), ...
- **Hello, World!**:编写第一个Haskell程序。 - **文件与字符流**:学习如何处理文件输入输出和字符流。 - **命令行引数**:获取和解析命令行输入。 - **乱数**:生成随机数的方法。 - **Byte Strings**:处理字节...
result = greet("World") ``` 这里`name: str`表示`name`参数应该是一个字符串,而`-> str`则指定了函数返回值应该也是字符串类型。 #### 结语 《Python Tricks》这本书通过一系列实用的例子和详细的解释,为读者...
例如,"HelloWorld"程序展示了如何在Xtend中编写输出语句,这是学习任何新编程语言的第一步。之后,通过"MoviesExample"示例,引导用户了解如何处理数据、解析数据,并对数据进行一系列查询。 **知识点3:Java互...
file.write('Hello, World!') # 文件在这里自动关闭 ``` - **属性(Properties)**:这是一种模拟字段访问的方式,可以用来实现更加灵活的数据封装。例如: ```python class Person: def __init__(self, age)...
Action myAction = () => Console.WriteLine("Hello, World!"); myAction(); // 调用匿名方法 ``` 5. **正则表达式(Regex)**:在项目中,可能有一个或多个方法利用了C#的`System.Text.RegularExpressions`命名空间...
public class LambdaExpressions { static Yunzhi yunzhi = x -> "this is a" + x; public static void main(String[] args) { System.out.println(yunzhi.test("test")); } } ``` 总的来说,Java函数式编程...
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 ...