制作软件的工作叫什么,台州百度搜索优化,tp框架做网站xml地图,做网站完整过程java8 函数式编程我们非常高兴地在jOOQ博客上宣布一个客座帖子#xff0c;该帖子由HSH Nordbank的高级软件工程师Daniel Dietrich #xff08;三人的丈夫和父亲#xff09;撰写。 他目前作为项目负责人和首席开发人员为金融产品创建定价框架。 除工作外#xff0c;他还对编… java8 函数式编程 我们非常高兴地在jOOQ博客上宣布一个客座帖子该帖子由HSH Nordbank的高级软件工程师Daniel Dietrich 三人的丈夫和父亲撰写。 他目前作为项目负责人和首席开发人员为金融产品创建定价框架。 除工作外他还对编程语言高效算法和数据结构感兴趣。 Daniel撰写了有关使用Java和Scala的Play框架构建Web应用程序的简短书《 Play Framework Starter》 并且最近正在创建Javaslang这是Java 8的功能组件库 尤其引起了我们的兴趣。 当我听说Java将获得lambda时这真是一个激动人心的时刻。 使用函数作为抽象手段的基本思想起源于80年前的“ lambda演算”。 现在Java开发人员可以使用函数传递行为。 ListInteger list Arrays.asList(2, 3, 1);// passing the comparator as lambda expression
Collections.sort(list, (i1, i2) - i1 - i2); Lambda表达式大大降低了Java的冗长性。 新的Stream API弥补了lambda和Java集合库之间的空白。 仔细观察显示并行流很少或至少谨慎使用。 流不能被重用并且烦恼的是必须来回转换集合。 // stream a list, sort it and collect results
Arrays.asList(2, 3, 1).stream().sorted().collect(Collectors.toList());// a little bit shorter
Stream.of(2, 3, 1).sorted().collect(Collectors.toList());// or better use an IntStream?
IntStream.of(2, 3, 1).sorted().collect(ArrayList::new, List::add, List::addAll);// slightly simplified
IntStream.of(2, 3, 1).sorted().boxed().collect(Collectors.toList()); 哇 这些是一些用于对整数列表进行排序的变体。 通常我们要专注于什么而不是把头放在如何做上 。 不需要额外的复杂性。 这是使用Javaslang达到相同结果的方法 List.of(2, 3, 1).sort(); 通常每种面向对象的语言都有一个命令式核心Java也是如此。 我们使用条件语句和循环来控制应用程序的流程。 String getContent(String location) throws IOException {try {final URL url new URL(location);if (!http.equals(url.getProtocol())) {throw new UnsupportedOperationException(Protocol is not http);}final URLConnection con url.openConnection();final InputStream in con.getInputStream();return readAndClose(in);} catch(Exception x) {throw new IOException(Error loading location location, x);}
} 功能语言使用表达式而不是语句我们认为是值。 Lambda表达式可帮助我们转换值。 这是一个使用Javaslang的Try示例 TryString getContent(String location) {return Try.of(() - new URL(location)).filter(url - http.equals(url.getProtocol())).flatMap(url - Try.of(url::openConnection)).flatMap(con - Try.of(con::getInputStream)).map(this::readAndClose);
} 结果是包含内容的Success或包含异常的Failure 。 通常与命令式风格相比此概念更加简洁并且可以生成我们可以推理的健壮程序。 希望这篇简短的介绍引起您对javaslang.com的关注 请访问该站点以了解有关使用Java 8和Javaslang进行函数式编程的更多信息。 翻译自: https://www.javacodegeeks.com/2015/05/functional-programming-in-java-8-with-javaslang.htmljava8 函数式编程