web-dev-qa-db-ja.com

Java Arrays and Generics:Java C#IEnumerable <T>と同等

C#では、string[]としてIEnumerable<string>

Java同等のものはありますか?

45
Winston Smith

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。

47

何方をお探しですか Iterable<String>

Iterable<T> <=> IEnumerable<T>
Iterator<T> <=> IEnumerator<T>
8
bruno conde

Iterable <T>

4
Learning

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);
2
Dan Vinton

_Iterable<T>_は問題ありませんが、小さな問題があります。 stream()、つまりラムダ式では簡単に使用できません。

必要であれば、それをスプリッターとして取得し、クラスStreamSupport()を使用する必要があります。

0
slavpetroff