保定网站设计公司,可以做课后作业的网站,展会信息网,自适应网页设计教程使用 IntelliJ IDEA 来帮忙构建你自己的实时模板连接分组《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spr…使用 IntelliJ IDEA 来帮忙构建你自己的实时模板连接分组《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 —— 精品合集》《Java 学习指南 —— 精品合集》Java8在2014年三月发布距离现在2015年三月五号快有一年了。我们打算将Pondus的所有生产服务器升级到这一新版本。从那时起我们将大部分代码库迁移到lambda表达式、数据流和新的日期API上。我们也会使用Nashorn来把我们的应用中运行时发生改变的部分变成动态脚本。除了lambda最实用的特性是新的数据流API。集合操作在任何我见过的代码库中都随处可见。而且对于那些集合操作数据流是提升代码可读性的好方法。但是一件关于数据流的事情十分令我困扰数据流只提供了几个终止操作例如reduce和findFirst属于直接操作其它的只能通过collect来访问。工具类Collctors提供了一些便利的收集器例如toList、toSet、joining和groupingBy。例如下面的代码对一个字符串集合进行过滤并创建新的列表stringCollection.stream().filter(e - e.startsWith(a)).collect(Collectors.toList());
在迁移了300k行代码到数据流之后我可以说toList、toSet、和groupingBy是你的项目中最常用的终止操作。所以我不能理解为什么不把这些方法直接集成到Stream接口上面这样你就可以直接编写stringCollection.stream().filter(e - e.startsWith(a)).toList();
这在开始看起来是个小缺陷但是如果你需要一遍又一遍地编写这些代码它会非常烦人。有toArray()方法但是没有toList()所以我真心希望一些便利的收集器可以在Java9中这样添加到Stream接口中。是吧Brianಠ_ಠ注Stream.js是浏览器上的Java 8 数据流API的JavaScript接口并解决了上述问题。所有重要的终止操作都可以直接在流上访问十分方便。详情请见API文档。无论如何IntelliJ IDEA声称它是最智能的Java IDE。所以让我们看看如何使用IDEA来解决这一问题。使用 IntelliJ IDEA 来帮忙IntelliJ IDEA自带了一个便利的特性叫做实时模板Live Template。如果你还不知道它是什么实时模板是一些常用代码段的快捷方式。例如你键入sout并按下TAB键IDEA就会插入代码段System.out.println()。更多信息请见这里。如何用实时模板来解决上述问题实际上我们只需要为所有普遍使用的默认数据流收集器创建我们自己的实时模板。例如我们可以创建.toList缩写的实时模板来自动插入适当的收集器.collect(Collectors.toList())。下面是它在实际工作中的样子构建你自己的实时模板让我们看看如何自己构建它。首先访问设置Settings并在左侧的菜单中选择实时模板。你也可以使用对话框左上角的便利的输入过滤。下面我们可以通过右侧的图标创建一个新的组叫做Stream。接下来我们向组中添加所有数据流相关的实时模板。我经常使用默认的收集器toList、toSet、groupingBy 和 join所以我为每个这些方法都创建了新的实时模板。这一步非常重要。在添加新的实时模板之后你需要在对话框底部指定合适的上下文。你需要选择Java → Other然后定义缩写、描述和实际的模板代码。// Abbreviation: .toList
.collect(Collectors.toList())// Abbreviation: .toSet
.collect(Collectors.toSet())// Abbreviation: .join
.collect(Collectors.joining($END$))// Abbreviation: .groupBy
.collect(Collectors.groupingBy(e - $END$))
特殊的变量$END$指定在使用模板之后的光标位置所以你可以直接在这个位置上打字例如定义连接分隔符。提示你应该开启Add unambiguous imports on the fly自动添加明确的导入选项便于让IDEA自动添加java.util.stream.Collectors的导入语句。选项在Editor → General → Auto Import中。让我们在实际工作中看看这两个模板连接分组Intellij IDEA中的实时模板非常灵活且强大。你可以用它来极大提升代码的生产力。你知道实时模板可以拯救生活的其它例子吗请让我知道仍然不满意吗在我的数据流教程中学习所有你想要学到的东西。祝编程愉快来源sf.gg/a/1190000006033999《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 —— 精品合集》《Java 学习指南 —— 精品合集》