用idea编写java代码时突然出现的问题求大佬指点

特殊的变量$END$指定在使用模板之后的光标位置,所以你可以直接在这个位置上打字,例如,定义连接分隔符。提示:你应该开启"Add unambiguous imports on the fly"(自动添加明确的导入)选项,便于让IDEA自动添加 java.util.stream.Collectors的导入语句。选项在 Editor → General → Auto Import中。让我们...
用idea编写java代码时突然出现的问题求大佬指点
Java8在2014年三月发布了。我们打算将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中的实时模板非常灵活且强大。你可以用它来极大提升代码的生产力。你知道实时模板可以拯救生活的其它例子吗?请让我知道!

作者:布客飞龙 segmentfault.com/a/1190000006033999
2022-03-14
联网 重构一下,试试可不可以2022-03-14
mengvlog 阅读 10 次 更新于 2025-07-20 20:17:13 我来答关注问题0
  •  翡希信息咨询 Idea解决代码冲突

    在Idea中解决代码冲突,可以按照以下步骤进行:确保开发环境配置正确:JDK安装与配置:确保JDK已正确安装,并配置好环境变量。Maven安装与配置:安装Maven,并配置为Java项目的构建工具。Git安装与配置:安装Git,并配置Git账户,包括用户名和邮箱,以便后续代码提交。在IDEA中处理代码冲突:克隆远程仓库:使用Gi...

  •  起航知识小百科 为什么intellijidea运行java程序就闪退?

    1. 环境问题: IntelliJ IDEA 运行 Java 程序需要正确的 JDK支持。如果未正确配置 JDK 或者使用的 JDK 版本与项目不兼容,可能导致程序运行时闪退。2. 内存问题: 如果 Java 程序消耗的内存超过了系统可用的最大内存量,可能会导致程序崩溃或闪退。这时需要调整程序的内存分配设置或增加系统的内存资源。3...

  •  翡希信息咨询 idea编译java后中文乱码怎么解决

    在编写Java代码时,确保源码文件的编码为UTF8。IDEA可以自动识别文件编码,但建议手动检查并设置为UTF8。可以通过查看文件状态栏来确认当前文件的编码,如果不是UTF8,则另存为UTF8编码格式。检查项目编码设置:在IDEA中,检查项目的编码设置。右击项目根目录,选择“Mark Directory as”,然后选择“Sources ...

  •  jien217 intellij idea 运行java程序就闪退

    修改下idea的运行内存大小\x0d\x0a具体操作:\x0d\x0a安装目录下的bin\x0d\x0a找到idea.exe.vmoptions 最大的修改下-Xmx1024m\x0d\x0a找到idea64.exe.vmoptions 最大的修改下-Xmx1024m

  • 在使用IDEA编写Java程序时,import语句不起作用通常是因为项目配置中未正确引入相关依赖。以下是几个可能的解决方案:检查并添加依赖:确保pom.xml文件中已经添加了相应的依赖项。如果未添加,需要在标签内添加所需的依赖。例如:xml com.example

檬味博客在线解答立即免费咨询

报错相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部