首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Intellij IDEA中将Java 8流降级为Java 7循环

在Intellij IDEA中将Java 8流降级为Java 7循环
EN

Stack Overflow用户
提问于 2019-02-07 21:34:22
回答 2查看 1.4K关注 0票数 8

我有一些使用Java8特性编写的代码,这意味着流和lambdas。现在,我必须在一个使用Java7的项目中重用这些代码,有没有可能使用IntelliJ自动重构代码?

例如,我必须将一些如下所示的代码重构为一个简单的for / while循环。

代码语言:javascript
运行
复制
Arrays.stream(values)
      .distinct()
      .limit(2)
      .count();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-07 21:38:25

支持,IntelliJ有循环替换Stream API链重构选项。将光标放在Arrays.stream()方法上,按Alt+Enter后弹出:

它将生成如下代码:

代码语言:javascript
运行
复制
long count = 0L;
long limit = 2;
Set<Integer> uniqueValues = new HashSet<>();
for (int i : new int[]{1, 2, 3}) {
    if (uniqueValues.add(i)) {
        if (limit-- == 0) break;
        count++;
    }
}
System.out.println(count);

要使选项起作用,项目语言级别必须为8或更高。

票数 10
EN

Stack Overflow用户

发布于 2019-02-07 22:17:00

不过,您确实不需要为当前逻辑编写那么多代码(这里的重构似乎不是最优的,至少对我来说可读性较差)。

同样有效的是简单地使用Set并解决其大小问题:

代码语言:javascript
运行
复制
Set<String> set = new HashSet<>(values);
System.out.println(set.size() > 2 ? 2 : set.size());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54574551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档