可以使用Lambda表达式来迭代Enumeration
吗?以下代码片段的Lambda表示将是什么:
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
NetworkInterface networkInterface = nets.nextElement();
}
我在里面找不到任何流。
发布于 2014-04-24 21:33:00
如果您不喜欢Collections.list(Enumeration)
在迭代开始之前将整个内容复制到一个(临时)列表中,您可以使用一个简单的实用程序方法来帮助自己:
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
特性)…
发布于 2015-09-17 18:21:44
由于Java-9将有新的默认方法Enumeration.asIterator()
,它将使纯Java解决方案变得更简单:
nets.asIterator().forEachRemaining(iface -> { ... });
发布于 2018-01-29 22:45:16
对于Java 8,枚举到流的最简单转换是:
Collections.list(NetworkInterface.getNetworkInterfaces()).stream()
https://stackoverflow.com/questions/23261803
复制相似问题