2017-05-26 3 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:
Rewordingこの部分。

物事の反復可能性を取り、それらを処理する関数が既に存在します(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-)を使用します。 1項目セット、Iterableです。 –

+1

"機能は短命のリソースを使用していますが、多くのゴミ箱よりも効率的です" - 明確ではないが、動機について少し詳しく説明できるか? – alfasin

答えて

2

使用Collections.singleton(item)

+0

ユーザーが何をしているかによって異なります。それらの反復目的のためにストリームを作成する方がより有利な場合があります。はい、それは適切な種類のストリームを得るためにいくつかの努力を重複するという欠点がありますが、OPがここで何をしようとしているのかにかかわらず、混乱が排除されます。 – Makoto

2

たぶん、あなたはCollections.singletonList(object)の表情を持つことができます。

+0

ユーザーのしていることによって異なります。それらの反復目的のためにストリームを作成する方がより有利な場合があります。はい、それは適切な種類のストリームを得るためにいくつかの努力を重複するという欠点がありますが、OPがここで何をしようとしているのかにかかわらず、混乱が排除されます。 – Makoto

関連する問題