1.概述

这本烹饪书分为小而集中的食谱和代码片段用于使用番石榴函数风格的元素——谓词和函数。

烹饪书格式是集中的和实际的-没有额外的细节和解释的必要。

2.的食谱

根据条件(自定义谓词)筛选集合

List numbers = Lists。newArrayList(1, 2, 3, 6, 10, 34, 57, 89);Predicate acceptEven = new Predicate() {@Override public boolean apply(Integer number) {return (number % 2) == 0;}};List偶数= Lists.newArrayList(过滤器(数字,acceptEven));找到的整数=集合。binarySearch (evenNumbers 57);为了(发现,低(0));

从集合中过滤出空值

List withNulls = Lists。newArrayList("a", "bc", null, "def");Iterable withoutNuls =可迭代对象。过滤器(withNulls Predicates.notNull ());assertTrue (iterable。所有(withoutNuls Predicates.notNull ()));

检查集合中所有元素的条件

List偶数=列表。newArrayList(2, 6, 8, 10, 34, 90);Predicate acceptEven = new Predicate() {@Override public boolean apply(Integer number) {return (number % 2) == 0;}};assertTrue (iterable。所有(evenNumbers acceptEven));

否定一个谓词

List偶数=列表。newArrayList(2, 6, 8, 10, 34, 90);Predicate acceptOdd = new Predicate() {@Override public boolean apply(Integer number) {return (number % 2) != 0;}};assertTrue (iterable。所有(evenNumbers Predicates.not (acceptOdd)));

应用一个简单的函数

List numbers = Lists。newArrayList(1、2、3);List asstring = Lists。变换(数字,Functions.toStringFunction ());assert (asstring, contains("1", "2", "3"));

首先应用中介函数对集合进行排序

List numbers = array。asList(2, 1, 11, 100, 8, 14);order  order = order .natural().onResultOf(Functions.toStringFunction());List inAlphabeticalOrder = orders . sortedcopy (numbers);List correctAlphabeticalOrder =列表。newArrayList(1, 100, 11, 14, 2, 8);为了(correctAlphabeticalOrder等于(inAlphabeticalOrder));
         

复杂的示例-链接谓词和函数

List numbers = array。asList(2, 1, 11, 100, 8, 14);Predicate acceptEvenNumber = new Predicate() {@Override public boolean apply(Integer number) {return (number % 2) == 0;}};Function powerOfTwo = new Function() {@Override public Integer apply(Integer input) {return (int) Math. return (int) Math. return (int)战俘(输入,2);}};FluentIterable powerOfTwoOnlyForEvenNumbers = FluentIterable.from(numbers).filter(acceptEvenNumber).transform(powerOfTwo);断言(poweroftwoonlyforvennumbers, contains(4,10000, 64,196));

两个函数组成

List numbers = array。asList(2、3);Function powerOfTwo = new Function() {@Override public Integer apply(Integer input) {return (int) Math. return (int) Math. return (int)战俘(输入,2);}};List result = Lists。变换(数字,Functions.compose (powerOfTwo powerOfTwo));为了(结果,包含(81);

创建一个由集合和函数支持的映射

Function powerOfTwo = new Function() {@Override public Integer apply(Integer input) {return (int) Math. return (int) Math. return (int)战俘(输入,2);}};Set lowNumbers = Sets。newHashSet(2、3、4);Map numberToPowerOfTwoMuttable = Maps。asMap (lowNumbers powerOfTwo);Map numberToPowerOfTwoImuttable = Map。toMap (lowNumbers powerOfTwo);为了(numberToPowerOfTwoMuttable.get(2),等于(4));为了(numberToPowerOfTwoImuttable.get(2),等于(4));

根据谓词创建函数

List numbers = Lists。newArrayList(1, 2, 3, 6);Predicate acceptEvenNumber = new Predicate() {@Override public boolean apply(Integer number) {return (number % 2) == 0;}};Function isEventNumberFunction = Functions.forPredicate(acceptEvenNumber);List areNumbersEven = Lists。变换(数字,isEventNumberFunction);assertThat(areNumbersEven, contains(false, true, false, true)); / /断言数目为7

3.更多的番石榴食谱

番石榴是一个全面且非常有用的库——下面是一些以烹饪书的形式涉及的api:

享受。

4.结论

这个格式与我通常的教程有一点不同——主要是因为它是一本内部开发食谱我保存并使用了很长一段时间。我们的目标是让这些信息在网上随处可见——并且每当我遇到一个新的有用的例子时就把它添加进去。

所有这些示例和代码片段的实现可以找到在GitHub-这是一个基于maven的项目,所以它应该很容易导入和运行。

通用的底部

通过。开始使用Spring 5和Spring Boot 2学习的春天课程:

>>查看课程
本文评论关闭!