|
You are here |
www.morling.dev | ||
| | | | |
richardstartin.github.io
|
|
| | | | | The streams API has been around for a while now, and I'm a big fan of it. It allows for a clean declarative programming style, which permits various optimisations to occur, and keeps the pastafarians at bay. I also think the Stream is the perfect abstraction for data interchange across API boundaries. This is partly because a Stream is lazy, meaning you don't need to pay for consumption until you actually need to, and partly because a Stream can only be used once and there can be no ambiguity about ownership. If you supply a Stream to an API, you must expect that it has been used and so must discard it. This almost entirely eradicates defensive copies and can mean that no intermediate data structures need ever exist. Despite my enthusiasm for this abstractio... | |
| | | | |
studiofreya.org
|
|
| | | | | ||
| | | | |
konradreiche.com
|
|
| | | | | Since most of the Java code I wrote in the past was on Android I was not able to enjoy too many Java 8 features yet. Though recently I wrote a microservice in Java using Spring Boot where I could make full use of lambdas and functional interfaces. The following method, for instance, returns the sum of all transactions for a specified instance by traversing their children. @RequestMapping(value = "/transaction/sum/{id}", method = RequestMethod.GET) BigDecimal Sum sum(@PathVariable long id) { List transactions = new ArrayList<>(); Transaction current = repository.find(id); while (current != null) { transactions.add(current); current = current.getChild(); } return transactions.stream().map(t -> t.getAmount()) .reduce(BigDecimal.ZERO, BigDecimal::add); } As some... | |
| | | | |
www.codeproject.com
|
|
| | | For those who code | ||