首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java 8中迭代枚举

在Java 8中迭代枚举
EN

Stack Overflow用户
提问于 2014-04-24 14:51:58
回答 4查看 56.1K关注 0票数 77

可以使用Lambda表达式来迭代Enumeration吗?以下代码片段的Lambda表示将是什么:

代码语言:javascript
复制
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();

while (nets.hasMoreElements()) {
    NetworkInterface networkInterface = nets.nextElement();

}

我在里面找不到任何流。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-24 21:33:00

如果您不喜欢Collections.list(Enumeration)在迭代开始之前将整个内容复制到一个(临时)列表中,您可以使用一个简单的实用程序方法来帮助自己:

代码语言:javascript
复制
public static <T> void forEachRemaining(Enumeration<T> e, Consumer<? super T> c) {
  while(e.hasMoreElements()) c.accept(e.nextElement());
}

然后,您可以简单地执行forEachRemaining(enumeration, lambda-expression); (注意import static特性)…

票数 39
EN

Stack Overflow用户

发布于 2015-09-17 18:21:44

由于Java-9将有新的默认方法Enumeration.asIterator(),它将使纯Java解决方案变得更简单:

代码语言:javascript
复制
nets.asIterator().forEachRemaining(iface -> { ... });
票数 49
EN

Stack Overflow用户

发布于 2018-01-29 22:45:16

对于Java 8,枚举到流的最简单转换是:

Collections.list(NetworkInterface.getNetworkInterfaces()).stream()

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23261803

复制
相关文章

相似问题

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