C#では、string[]
としてIEnumerable<string>
。
Java同等のものはありますか?
Iterable<String>
はIEnumerable<string>
と同等です。
配列がIterable
を実装している場合、型システムでは奇妙です。 String[]
はObject[]
のインスタンスですが、Iterable<String>
はIterable<Object>
ではありません。クラスとインターフェースは、異なるジェネリック引数を持つ同じジェネリックインターフェースを複数実装することはできません。
String[]
は、拡張forループのIterable
と同じように機能します。
String[]
は簡単にIterable
に変換できます:
Iterable<String> strs = Java.util.Arrays.asList(strArray);
配列よりもコレクションを優先します(とにかく非プリミティブの場合)。参照型の配列は少し奇妙であり、Java 1.5。
何方をお探しですか Iterable<String>
?
Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
Iterable <T>
Java相当するものはIterable<String>
です。String[]
はそれを実装していませんが、とにかく要素をループできます:
String[] strings = new String[]{"this", "that"};
for (String s : strings) {
// do something
}
Iterable<String>
を実装するものが本当に必要な場合は、これを行うことができます。
String[] strings = new String[]{"this", "that"};
Iterable<String> stringIterable = Arrays.asList(strings);
_Iterable<T>
_は問題ありませんが、小さな問題があります。 stream()
、つまりラムダ式では簡単に使用できません。
必要であれば、それをスプリッターとして取得し、クラスStreamSupport()
を使用する必要があります。