# \#book-functional-programming-in-java-second-edition

**URL:** https://forum.devtalk.com/tag/book-functional-programming-in-java-second-edition/2640.md

[Latest](https://forum.devtalk.com/latest.md) · [Categories](https://forum.devtalk.com/categories.md) · [Tags](https://forum.devtalk.com/tags.md)

---

## [Functional Programming in Java, Second Edition: Broken link - Appendix 3. Web Resources, pg. 234, Tell, Don’t Ask](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-broken-link-appendix-3-web-resources-pg-234-tell-don-t-ask/126732)

<div class="topic-metadata">

**Author:** [@ndierauf](https://forum.devtalk.com/u/ndierauf)\
**Replies:** 0\
**Last updated:** [1 October 2023 08:02 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-broken-link-appendix-3-web-resources-pg-234-tell-don-t-ask/126732 "2023-10-01T08:02:10Z")

</div>

@venkats Appears to be a broken link in Appendix 3 a(Web Resources) on Page 234, for article to “Tell, Don’t Ask”. Link goes to: https://pragprog.com/articles/tell-dont-ask Maybe the expected link?: https://media.prag…

---

## [Functional Programming in Java, Second Edition: Chapter 3 typo Stream\<Characters\>](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-3-typo-stream-characters/123686)

<div class="topic-metadata">

**Author:** [@Athazo](https://forum.devtalk.com/u/Athazo)\
**Replies:** 0\
**Last updated:** [8 September 2023 13:16 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-3-typo-stream-characters/123686 "2023-09-08T13:16:59Z")

</div>

@venkats In the section “Iterating a String” found in chapter 3 “Strings, Comparators, and Filters” there seems to be a typo: “But we want a stream of characters (a Stream)\[…\]” I guess “Stream” is the correct type here…

---

## [Functional Programming in Java, Second Edition: On page 27, after "Found 2 names"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-on-page-27-after-found-2-names/109354)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 3\
**Last updated:** [2 June 2023 09:19 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-on-page-27-after-found-2-names/109354 "2023-06-02T09:19:43Z")

</div>

On p.27, after “Found 2 names”, we read: The filter() method returns an iterator just like the map() method does, But it really returns a Stream for further processing, not an iterator.

---

## [Functional Programming in Java, Second Edition: p.91: Rewrite FinanceData HTTP request method](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-91-rewrite-financedata-http-request-method/105927)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 3\
**Last updated:** [2 June 2023 09:14 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-91-rewrite-financedata-http-request-method/105927 "2023-06-02T09:14:13Z")

</div>

On page 91, we use a short method to request a stock ticker, class FinanceData However, this method is based on java.net.URL which has always been broken in several ways, one which being that it doesn’t encode the URL i…

---

## [Functional Programming in Java, Second Edition: p.48 and following: "String.toUpperCase"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-48-and-following-string-touppercase/105629)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 2\
**Last updated:** [2 June 2023 08:23 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-48-and-following-string-touppercase/105629 "2023-06-02T08:23:32Z")

</div>

In several places, the method String.toUpperCase() is misspelled as String.toUppercase() sometimes via the :: method reference, String::toUppercase() rather than String::toUpperCase() JavaDoc page:

---

## [Functional Programming in Java, Second Edition: p. 130 "LazyStreams.java"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-130-lazystreams-java/106318)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [1 June 2023 05:44 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-130-lazystreams-java/106318 "2023-06-01T05:44:26Z")

</div>

As previously, the code uses List\<String\> names = Arrays.asList(...); which yields an “array-backed list”, rather than List\<String\> names = List.of(...); which yields an immutable List, which is all we need.

---

## [Functional Programming in Java, Second Edition: p.90 CalculateNAVTest erroneous](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-90-calculatenavtest-erroneous/105924)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 20:09 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-90-calculatenavtest-erroneous/105924 "2023-05-31T20:09:37Z")

</div>

On page 90, CalculateNAVTest.java: public class CalculateNAVTest { @Test public void computeStockWorth() { final CalculateNAV calculateNAV = new CalculateNAV(ticker -\> new BigDecimal("6.01")); BigDeci…

---

## [Functional Programming in Java, Second Edition: mapToInt() referenced instead of  mapToDouble() (page 21)](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-maptoint-referenced-instead-of-maptodouble-page-21/71562)

<div class="topic-metadata">

**Author:** [@jozshor00](https://forum.devtalk.com/u/jozshor00)\
**Replies:** 1\
**Last updated:** [31 May 2023 20:09 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-maptoint-referenced-instead-of-maptodouble-page-21/71562 "2023-05-31T20:09:02Z")

</div>

@venkats On page 21: For each price from the prices list that passes through the filter(), the mapToInt() method invokes the provided lambda expression to transform the given price to a discounted price. Reference t…

---

## [Functional Programming in Java, Second Edition: Chapter 10 nitpicking](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-10-nitpicking/109670)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 20:08 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-10-nitpicking/109670 "2023-05-31T20:08:02Z")

</div>

On page 174: StreamAPI Should probably be Stream API Also on page 174: blow up with an exception Suggesting to change this wherever it occurs. This is really an unfortunate choice of words. We raise or throw …

---

## [Functional Programming in Java, Second Edition: p 148 "An optimization problem" & "Plain-Vanilla Recursion" problems](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-148-an-optimization-problem-plain-vanilla-recursion-problems/106571)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 20:03 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-148-an-optimization-problem-plain-vanilla-recursion-problems/106571 "2023-05-31T20:03:25Z")

</div>

On page 148, “An optimization problem” we read: We’ll employ a solution for a company that buys rods at wholesale and sells them at retail. They figured that by cutting the rods into different sizes, they could maximize…

---

## [Functional Programming in Java, Second Edition: p.61, ListSelectFiles.java needs a "printer"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-61-listselectfiles-java-needs-a-printer/105637)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 19:57 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-61-listselectfiles-java-needs-a-printer/105637 "2023-05-31T19:57:32Z")

</div>

We find this code on page 61, for ListSelectFiles.java final String\[\] files = new File("fpij").list(new java.io.FilenameFilter() { public boolean accept(final File dir, final String name) { …

---

## [Functional Programming in Java, Second Edition: p.139 Intro to "Optimizing Recursions" - very confusing](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-139-intro-to-optimizing-recursions-very-confusing/106407)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 19:20 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-139-intro-to-optimizing-recursions-very-confusing/106407 "2023-05-31T19:20:26Z")

</div>

We read: Recursion is a powerful and charming way to solve problems. It’s highly expressive—using recursion we can provide a solution to a problem by applying the same solution to its subproblems, an approach known as …

---

## [Functional Programming in Java, Second Edition: p 151 "func" instead of "memoizedFunction"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-151-func-instead-of-memoizedfunction/108459)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 4\
**Last updated:** [31 May 2023 19:14 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-151-func-instead-of-memoizedfunction/108459 "2023-05-31T19:14:42Z")

</div>

@venkats At 2/3rd of the page, we read; Within the computeMaxProfit() method, we perform our task, and when it’s time to recurse we route the call to func func should be memoizedFunction, as used in the example code…

---

## [Functional Programming in Java, Second Edition: p. 117, Nitpicking "verbose test"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-117-nitpicking-verbose-test/106271)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 1\
**Last updated:** [31 May 2023 17:58 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-p-117-nitpicking-verbose-test/106271 "2023-05-31T17:58:55Z")

</div>

In the given “old-school” test for the generation of an exception: @Test public void VerboseExceptionTest() { rodCutter.setPrices(prices); try { rodCutter.maxProfit(0); fail("Expected exception for zer…

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 195 ff “Refactoring Nested Loops"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-195-ff-refactoring-nested-loops/110268)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:42 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-195-ff-refactoring-nested-loops/110268 "2023-05-24T00:42:48Z")

</div>

Nothing surprising here, just adapting the form to the other examples. Ah yes, compute() now returns an immutable list in all cases. package chapter11; import org.junit.jupiter.api.Test; import java.util.ArrayList; i…

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 193 ff “Refactoring Data Grouping Operations”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-193-ff-refactoring-data-grouping-operations/110267)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:37 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-193-ff-refactoring-data-grouping-operations/110267 "2023-05-24T00:37:57Z")

</div>

As usual, but the original code to be refactored was just too evil and had to be fixed. package chapter11; import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.HashSet; import java.util.Map; i…

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 192 ff “Refactoring File Processing”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-192-ff-refactoring-file-processing/110266)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:35 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-192-ff-refactoring-file-processing/110266 "2023-05-24T00:35:19Z")

</div>

In this code: We actually create the (temporary) file we want to read and delete it again at the end. Default charsets for reading text files are the work of the devil, we set UTF-8 explicitly. The files need to be pro…

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 189 ff “Refactoring to Rework the Logic”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-189-ff-refactoring-to-rework-the-logic/110265)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:31 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-189-ff-refactoring-to-rework-the-logic/110265 "2023-05-24T00:31:31Z")

</div>

The usual changes but: The “FirstRepeatedLetter.findIn()” has been improved out of the box. In particular returning ‘\\0’ is too C-like and smells like “primitive obsession”. We have null, we should use it. What if the …

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 187 ff “Refactoring For Each”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-187-ff-refactoring-for-each/110264)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:24 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-187-ff-refactoring-for-each/110264 "2023-05-24T00:24:53Z")

</div>

Nothing special here, same changes as formerly, but we are using people.isEmpty() instead of people.size() == 0 for even better legibility. package chapter11; import org.junit.jupiter.api.Test; import java.util.Set; …

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 185 ff “Refactoring Unbounded Loops”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-185-ff-refactoring-unbounded-loops/110263)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:21 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-185-ff-refactoring-unbounded-loops/110263 "2023-05-24T00:21:50Z")

</div>

The same remarks apply as for “Refactoring the Traditional for Loop” No init() Negative tests which apply for input less than 1900, resulting in exceptions. but we cannot implement a common interface as the method par…

---

## [Functional Programming in Java, Second Edition: Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 184 ff “Refactoring More Complex loops”](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-184-ff-refactoring-more-complex-loops/110262)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [24 May 2023 00:16 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-184-ff-refactoring-more-complex-loops/110262 "2023-05-24T00:16:27Z")

</div>

The same remarks apply as for “Refactoring the Traditional for Loop” No init() Classes under test implement a common interface that is called in tests. Negative tests which apply for input less than 1900, resulting in…

---

## [Functional Programming in Java, Second Edition: JUnit code improvements for Chapter 11, pages 181 ff "Refactoring the Traditional for loop"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-181-ff-refactoring-the-traditional-for-loop/110234)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [23 May 2023 18:03 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-junit-code-improvements-for-chapter-11-pages-181-ff-refactoring-the-traditional-for-loop/110234 "2023-05-23T18:03:02Z")

</div>

Suggestions for some JUnit test improvements in Refactoring the Traditional “for” loop p 181 ff Below code for testing the original/classical “factorial” and the stream-based “factorial” . The following changes have b…

---

## [Functional Programming in Java, Second Edition: Suggestion for adding to the Bibliography](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-suggestion-for-adding-to-the-bibliography/110232)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [23 May 2023 16:31 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-suggestion-for-adding-to-the-bibliography/110232 "2023-05-23T16:31:14Z")

</div>

Although now aged by 34 years: “The Conception, Evolution, and Application of Functional Programming Languages” by Paul Hudak (1989-09-01) still is a good read (nourishing at 53 pages) and will satisfy readers interes…

---

## [Functional Programming in Java, Second Edition: Chapter 9, p.164 addendum to "parallel stream"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-9-p-164-addendum-to-parallel-stream/110230)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [23 May 2023 15:50 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-9-p-164-addendum-to-parallel-stream/110230 "2023-05-23T15:50:53Z")

</div>

In Chapter 9, p.164 the stream is parallelized in 1 step. This inspired my to write some test some code to call a task “in parallel”: Not in parallel, inside a loop Using ThreadGroups (essentially ‘temporary worker po…

---

## [Functional Programming in Java, Second Edition: Chapter 1, p.15, a little note](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-1-p-15-a-little-note/110231)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [23 May 2023 16:12 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-1-p-15-a-little-note/110231 "2023-05-23T16:12:49Z")

</div>

On page 15, we read: In this example we’re sending a function, price -\> price \* 0.9, as an argument to mapToDouble The function being passed is created just in time, at the point of call to the higher-order function ma…

---

## [Functional Programming in Java, Second Edition: Chapter 12 "Functional Programming Idioms", some notes](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12-functional-programming-idioms-some-notes/109829)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [20 May 2023 12:45 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12-functional-programming-idioms-some-notes/109829 "2023-05-20T12:45:37Z")

</div>

On page 179: First, imperative style was the way of life in Java and most programmers are very familiar with that style, since that was the only option for a long time. In other words: Java is a member of the family …

---

## [Functional Programming in Java, Second Edition: Chapter 12, p.207 - The key is really mutability](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12-p-207-the-key-is-really-mutability/109828)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [20 May 2023 12:13 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12-p-207-the-key-is-really-mutability/109828 "2023-05-20T12:13:11Z")

</div>

As traditional , the “impure” code of page 207 in the form of a pretend test. (Doesn’t “impure” refer to performing uncontrolled side effects, like printing to Stdout in the middle of a function though? Here, the lambda…

---

## [Functional Programming in Java, Second Edition: Chapter 9, p.165, "parallel streams"](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-9-p-165-parallel-streams/109827)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [20 May 2023 11:28 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-9-p-165-parallel-streams/109827 "2023-05-20T11:28:13Z")

</div>

A question to highlight is: Is there a way to make sure that a stream is NOT parallel, and make this evident in the code? As in: stream .assertNotParallel() .map(x -\> foo(x))... The idea would be to make it cle…

---

## [Functional Programming in Java, Second Edition: Additional subchapter on building one's own collector?](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-additional-subchapter-on-building-ones-own-collector/109826)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [20 May 2023 10:57 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-additional-subchapter-on-building-ones-own-collector/109826 "2023-05-20T10:57:44Z")

</div>

I have been thinking about how to collect “two adjacent elements” in a stream, for example transform a stream of Long into a stream of Pair\<Long,Long\> (where Pair\<A,B\> is a little record that does just what it says). I o…

---

## [Functional Programming in Java, Second Edition: Chapter 12](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12/109824)

<div class="topic-metadata">

**Author:** [@dtonhofer](https://forum.devtalk.com/u/dtonhofer)\
**Replies:** 0\
**Last updated:** [20 May 2023 09:40 UTC](https://forum.devtalk.com/t/functional-programming-in-java-second-edition-chapter-12/109824 "2023-05-20T09:40:43Z")

</div>

On page 200, the code can use boxed() instead of the (somewhat mysterious) maptoObject(e -\> e) One should also reveal to the reader that we are computing perfect numbers :joy: Perfect number - Wikipedia A000396 - OEIS …

[Next page](https://forum.devtalk.com/tag/book-functional-programming-in-java-second-edition/2640.md?match_all_tags=true&page=1&tags%5B%5D=book-functional-programming-in-java-second-edition)
