首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JEP286 -在增强的for-循环中使用索引

JEP286 -在增强的for-循环中使用索引
EN

Stack Overflow用户
提问于 2020-03-14 18:01:48
回答 2查看 82关注 0票数 1

我在下面的Open链接上阅读了局部变量类型推断的文档。

http://openjdk.java.net/jeps/286

有一件事引起了我的注意--“增强的for-循环中的索引”。我查了一下,不知道在哪里讨论了增强的for循环中的索引。到目前为止,我的理解是索引只允许在传统的for循环中使用(显然,我遗漏了一些东西)。

请您提供一些示例,以便在增强的for -循环中使用索引吗?

目标

我们通过减少编写Java代码的相关仪式,同时维护Java对静态类型安全性的承诺,通过允许开发人员省略经常不必要的局部变量类型的清单声明,来改善开发人员的体验。例如,这一特性将允许声明,例如: var list =新的ArrayList();//推断ArrayList var流= list.stream();//推断流 这种处理将仅限于带有初始化器的局部变量、增强的for -循环中的索引和传统for-循环中声明的局部变量;它不能用于方法表单、构造函数表单、方法返回类型、字段、捕捉格式或任何其他类型的变量声明。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-14 18:24:14

如果您进一步查看同一文档中链接的风格指南,您会发现在局部变量“示例”下使用迭代器的很好建议,如:

void removeMatches(Map<?扩展字符串?扩展Number>映射,int max) { for (var迭代器= map.entrySet().iterator();iterator.hasNext();){ var entry = iterator.next();if (max >0& matches(entry)) { iterator.remove();max-;}

具体而言,对于索引部分,您还可以执行如下操作:

代码语言:javascript
复制
void removeMatchesIndexes(List<? extends Number> list, int max) {
    for (var i = 0; i < list.size(); i++) {
        var entry = list.get(i);
        if (entry.intValue() > max) {
            list.remove(entry);
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2020-03-14 18:13:23

这是指使用增强的for循环声明的变量,如:

代码语言:javascript
复制
var elements = new Arraylist<String>();
// Fill the list
for (var element : elements) {
    // element is type String
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60685744

复制
相关文章

相似问题

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