2017-05-26 30 views
-1

将单个对象视为可迭代对象的最佳方式是什么?在Java中处理像迭代器这样的对象的最佳方式是什么?

例如,在以下情况下...

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 
    } 
} 

UPDATE:
重述这一部分。

函数已经存在,需要对事物进行迭代并对其进行处理(fun(Iterable<Object> os))。我为这个函数添加一个别名,它取而代之(fun(Object o))。这个函数将被不同的实例调用,所以我想用最简单的资源有效的方式来调用Iterable函数(不管创建最少的垃圾/最快的清理)。

或者正如问题标题所示,Object传递给需要Iterable<Object>的函数的最佳方法是什么?

+8

数组不是可迭代的,但是您也可以对其使用enhanced-for语句。你究竟在努力完成什么? – Makoto

+2

另一种方法是使用[Collections.singleton(o)](https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#singleton-T-),它会生成一个单项集,这是一个Iterable。 –

+1

“,但该函数使用的资源短暂,但使用比许多垃圾资源更有效率” - 不清楚,您是否可以进一步解释动机? – alfasin

回答

2

使用Collections.singleton(item)

+0

取决于用户在做什么。为他们的迭代目的创建一个流可能更有优势。虽然是的,但它有重复一些努力来获得正确类型的流的缺点,它消除了OP在此尝试执行的任何操作的混淆。 – Makoto

2

也许你可以有Collections.singletonList(object)看看。

+0

取决于用户在做什么。为他们的迭代目的创建一个流可能更有优势。虽然是的,但它有重复一些努力来获得正确类型的流的缺点,它消除了OP在此尝试执行的任何操作的混淆。 – Makoto

相关问题