【发布时间】:2017-10-27 20:33:12
【问题描述】:
将单个对象视为可迭代的最佳方法是什么?
比如下面这种情况……
public void fun(Object o) {
fun(new TempList(o));
}
public void fun(Iterable<Object> os) {
try {
for(Object o : os)
// Write to server
System.out.println(o);
} catch(Exception e) {
// log e
}
}
更新:
改写这部分。
一个函数已经存在,它接受一个可迭代的事物并处理它们 (fun(Iterable<Object> os))。我正在为这个函数添加一个别名,它取而代之的是一个项目 (fun(Object o))。这个函数会被不同的实例调用很多次,所以我想要最节省资源的方式来使用单个项目调用 Iterable 函数(无论创建的垃圾最少/清理得最快)。
或者,正如问题标题所说,将Object 传递给需要Iterable<Object> 的函数的最佳方法是什么?
【问题讨论】:
-
数组不是可迭代的,但您也可以在其上使用enhanced-for 语句。你到底想完成什么?
-
另一种方法是使用Collections.singleton(o),它产生一个单项Set,它是一个Iterable。
-
“但该函数使用的资源是短暂的,但使用一个比使用许多垃圾资源更有效” - 不清楚,您能否进一步解释一下动机?
-
(我赞成 2 个完全有效但被否决的答案)
-
@HuguesMoreau:它们充其量是不完整的。根据 OP 尝试执行的操作,最好使用带有
forEach的流。我们所知道的是,他们正在尝试两种不同类型的事情,虽然我们可以提供数学上正确的解决方案,但最好让每个人都得到一个好的答案。