原创转载请注明出处:http://agilestyle.iteye.com/blog/2375723
IterationStringTest
package chapter3; import org.junit.Before; import org.junit.Test; public class IterationStringTest { private String str; @Before public void setUp() throws Exception { str = "Hello, 123, world"; } @Test public void test1() { str.chars().forEach(ch -> System.out.println(ch)); } @Test public void test2() { str.chars().forEach(System.out::println); } private static void printChar(int input) { System.out.println((char) input); } @Test public void test3() { str.chars().forEach(IterationStringTest::printChar); } @Test public void test4() { str.chars().mapToObj(ch -> Character.valueOf((char) ch)).forEach(System.out::println); } @Test public void test5() { str.chars().filter(ch -> Character.isDigit(ch)).forEach(ch -> printChar(ch)); } @Test public void test6() { str.chars().filter(Character::isDigit).forEach(IterationStringTest::printChar); } }
Console Output
CompareTest
package chapter3; import org.junit.Before; import org.junit.Test; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; public class CompareTest { private List<Person> personList; @Before public void setUp() throws Exception { personList = Arrays.asList( new Person("Alex", 20), new Person("Kevin", 27), new Person("Darren", 27), new Person("Max", 35)); } @Test public void test1() { System.out.println("sorted in asc"); personList.stream() .sorted((person1, person2) -> person1.ageDifference(person2)) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test2() { System.out.println("sorted in asc"); personList.stream() .sorted(Person::ageDifference) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test3() { System.out.println("sorted in desc"); personList.stream() .sorted((person1, person2) -> person2.ageDifference(person1)) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test4() { Comparator<Person> compareAsc = (person1, person2) -> person1.ageDifference(person2); Comparator<Person> compareDesc = compareAsc.reversed(); System.out.println("sorted in asc"); personList.stream() .sorted(compareAsc) .collect(Collectors.toList()) .forEach(System.out::println); System.out.println("sorted in desc"); personList.stream() .sorted(compareDesc) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test5() { System.out.println("sorted in asc order by name"); personList.stream() .sorted((person1, person2) -> person1.getName().compareTo(person2.getName())) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test6() { System.out.println("sorted in desc order by name"); personList.stream() .sorted((person1, person2) -> person2.getName().compareTo(person1.getName())) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test7() { personList.stream() .min(Person::ageDifference) .ifPresent(youngest -> System.out.println("Youngest: " + youngest)); } @Test public void test8() { personList.stream() .max(Person::ageDifference) .ifPresent(oldest -> System.out.println("Oldest: " + oldest)); } @Test public void test9() { personList.stream() .sorted(Comparator.comparing((Person person) -> person.getName())) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test10() { Function<Person, String> byName = person -> person.getName(); personList.stream() .sorted(Comparator.comparing(byName)) .collect(Collectors.toList()) .forEach(System.out::println); } @Test public void test11() { Function<Person, Integer> byAge = person -> person.getAge(); Function<Person, String> byName = person -> person.getName(); System.out.println("sorted in asc order by age and name"); personList.stream() .sorted(Comparator.comparing(byAge).thenComparing(byName)) .collect(Collectors.toList()) .forEach(System.out::println); } private static class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public int ageDifference(Person other) { return age - other.age; } @Override public String toString() { return String.format("%s - %d", name, age); } } }
Console Output
CollectorsTest
package chapter3; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.BinaryOperator; import java.util.stream.Collectors; public class CollectorsTest { private List<Person> personList; @Before public void setUp() throws Exception { personList = Arrays.asList( new Person("Alex", 20), new Person("Kevin", 27), new Person("Darren", 27), new Person("Max", 35)); } @Test public void test1() { List<Person> resultList = new ArrayList<>(); personList.stream() .filter(person -> person.getAge() > 20) .forEach(person -> resultList.add(person)); // older than 20: [Kevin - 27, Darren - 27, Max - 35] System.out.println("older than 20: " + resultList); } @Test public void test2() { List<Person> resultList = personList.stream() .filter(person -> person.getAge() > 20) .collect(ArrayList::new, ArrayList::add, ArrayList::addAll); // [Kevin - 27, Darren - 27, Max - 35] System.out.println(resultList); } @Test public void test3() { List<Person> resultList = personList.stream() .filter(person -> person.getAge() > 20) .collect(Collectors.toList()); // [Kevin - 27, Darren - 27, Max - 35] System.out.println(resultList); } @Test public void test4() { Map<Integer, List<Person>> resultMap = personList.stream() .collect(Collectors.groupingBy(Person::getAge)); // group by age: {35=[Max - 35], 20=[Alex - 20], 27=[Kevin - 27, Darren - 27]} System.out.println("group by age: " + resultMap); } @Test public void test5() { Map<Integer, List<String>> resultMap = personList.stream() .collect(Collectors.groupingBy(Person::getAge, Collectors.mapping(Person::getName, Collectors.toList()))); // {35=[Max], 20=[Alex], 27=[Kevin, Darren]} System.out.println(resultMap); } @Test public void test6() { Comparator<Person> byAge = Comparator.comparing(Person::getAge); Map<Character, Optional<Person>> resultMap = personList.stream(). collect(Collectors.groupingBy(person -> person.getName().charAt(0), Collectors.reducing(BinaryOperator.maxBy(byAge)))); System.out.println("Oldest person of each letter: " + resultMap); } private static class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public int ageDifference(Person other) { return age - other.age; } @Override public String toString() { return String.format("%s - %d", name, age); } } }
Console Output
FileDirTest
package chapter3; import org.junit.Test; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class FileDirTest { @Test public void test1() throws IOException { Files.list(Paths.get(".")).forEach(System.out::println); } @Test public void test2() throws IOException { Files.list(Paths.get(".")).filter(Files::isDirectory).forEach(System.out::println); } @Test public void test3() throws IOException { String[] files = new File(".").list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".java"); } }); System.out.println(files); } @Test public void test4() throws IOException { Files.newDirectoryStream( Paths.get("."), path -> path.toString().endsWith(".java")) .forEach(System.out::println); } @Test public void test5() throws IOException { File[] files = new File(".").listFiles(file -> file.isHidden()); new File(".").listFiles(File::isHidden); Arrays.stream(files).forEach(System.out::println); } @Test public void test6() throws IOException { List<File> files = new ArrayList<>(); File[] filesInCurrentDir = new File(".").listFiles(); for (File file : filesInCurrentDir) { File[] filesInSubDir = file.listFiles(); if (filesInSubDir != null) { files.addAll(Arrays.asList(filesInSubDir)); } else { files.add(file); } } System.out.println("Count: " + files.size()); } @Test public void test7() throws IOException { List<File> files = Stream.of(new File(".").listFiles()) .flatMap(file -> file.listFiles() == null ? Stream.of(file) : Stream.of(file.listFiles())) .collect(Collectors.toList()); System.out.println("Count: " + files.size()); } }
Console Output
相关推荐
本书旨在突破我们对编程知识的界限。 如果您想知道Lisp甚至编程本身的真正含义,这就是您一直在寻找的书。
**C++ Lambda表达式**是C++编程语言中一个强大的特性,从C++11标准开始引入,到C++20标准进一步增强。Lambda表达式允许程序员在代码中定义匿名函数,即没有名称的函数,这极大地提高了代码的灵活性和可读性。本书...
`JAVA 8 Lambda Expressions.pdf` 这份文档可能涵盖了以下主题: 1. Lambda 表达式的基本概念和语法 2. 函数式接口及其应用 3. Lambda 表达式与方法引用来实现函数式编程 4. Stream API 和 Lambda 表达式的结合使用...
Lambda22-DEMO-PC-041012是一个与Lambda工具相关的演示版本,适用于个人计算机。从描述中可以看出,它可能是一款软件或应用,需要通过特定的安装过程来部署。安装注册码899999999XXXXXXXXXXXEXX9CD7XCXBXW8XXC88VX...
开源项目-mtojek-aws-lambda-go-proxy.zip,mtojek/aws-lambda-go-proxy: Pass Lambda events to the application running on your machine | Debug real traffic locally | Forget about redeployments
**PyPI 官网下载 | cdk-lambda-extensions-0.1.232.tar.gz** 这个资源是Python开发者常用的工具,源自Python Package Index(PyPI)官方网站。PyPI是Python社区的一个重要组成部分,它提供了众多开源Python库的存储...
lambda-refarch-mobilebackend, 用于创建移动后端的无服务器参考架构 无服务器参考体系结构: 移动后端README Languages Languages | | | | TW TW TW TW TW 。简介移动后端参考架构( 图 ) 演示如何使用 AWS Lambda ...
**Python库 | lambdachain-0.1.tar.gz** `lambdachain-0.1.tar.gz` 是一个Python库的压缩包,主要用于利用Lambda函数进行链式操作。在Python编程中,Lambda函数是一种简洁、快速定义单行、匿名函数的方法。`lambda...
【Lambda 表达式】是 Java 8 中的一项重大新特性,它引入了一种更为简洁的函数式编程风格。Lambda 表达式本质上是一个没有名字的函数,允许我们将代码作为一个对象进行传递。这种功能使得 Java 的语言表达能力得到...
标题中的"PyPI 官网下载 | lambda-project-creator-0.0.4.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的项目,名为`lambda-project-creator`,版本为0.0.4,且已打包成tar.gz格式。PyPI是Python社区...
标题中的“PyPI 官网下载 | cdk-lambda-layer-zip-0.0.4.tar.gz”表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为"cdk-lambda-layer-zip",版本号为0.0.4,并且已经被打包成tar.gz格式。...
借助aws-lambda-go-api-proxy,可以轻松运行使用框架编写的Golang API,例如使用AWS Lambda的和Amazon API Gateway编写的框架。 入门 第一步是安装所需的依赖项 # First, we install the Lambda go libraries $ go ...
标题中的"PyPI 官网下载 | aws-lambda-rest-api-1.0.7.tar.gz"指的是一个在Python Package Index(PyPI)上发布的开源软件包。PyPI是Python开发者发布自己编写的Python模块和库的地方,使得全球的Python用户可以方便...
《Python库aws-cdk.aws-lambda-event-sources-0.31.0:构建云原生应用的强大工具》 在当今的IT行业中,云计算已经成为了技术发展的主流趋势,而AWS(Amazon Web Services)作为全球领先的云服务提供商,其提供的CDK...
aws-lambda-send-ses-email, 使用Amazon发送电子邮件的AWS Lambda函数 aws-lambda-send-ses-email使用Amazon发送电子邮件的AWS Lambda函数。这个功能的主要目的是提供一个服务器端后端来发送来自 static 网站的电子...
aws-lambda-local, 在本地运行自动气象站的Lambda函数 aws-lambda-local在本地运行 AWS Lambda函数 ! 最轻量的库- 没有外部依赖关系。 少于 200行代码。Windows,Mac和Linux测试 !安装npm install -g aws-lambda-...
《PyPI上的lambda-notebook-0.6.8.tar.gz:Python在云原生环境中的分布式探索》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库供用户下载和使用。标题提到的“lambda-notebook-...
《PyPI官网下载 | lambda-layer-0.0.4.tar.gz——Python库解析与应用》 PyPI(Python Package Index)是Python社区的核心资源库,它提供了大量的Python库供开发者下载和使用。"lambda-layer-0.0.4.tar.gz" 是一个在...
《Python库深度解析:cdk-lambda-extensions-0.1.99》 在Python的世界里,库是开发者的重要工具,它们提供了丰富的功能,帮助我们高效地完成各种任务。今天我们将聚焦于一个名为"cdk-lambda-extensions"的Python库...
《Python库aws-cdk.aws-lambda-python-alpha-2.5.0a0:构建云基础设施的利器》 在IT行业中,云计算已经成为了不可或缺的一部分,它为开发者提供了强大的计算能力和存储资源,极大地推动了软件开发的效率。而在众多...