Java数组和generics:Java相当于C#IEnumerable <T>

所以在C#中,我可以将一个string[]作为IEnumerable<string>

有没有Java的等价物?

Iterable<String>等价于IEnumerable<string>

如果数组实现了Iterable那么这将是types系统中的一个缺陷。 String[]Object[]一个实例,但Iterable<String>不是Iterable<Object> 。 类和接口不能用不同的generics参数来实现相同的generics接口。

String[]将像增强for循环中的Iterable一样工作。

String[]可以很容易地变成一个Iterable

 Iterable<String> strs = java.util.Arrays.asList(strArray); 

喜欢数组上的集合(反正对于非基元)。 引用types的数组有点奇怪,从Java 1.5开始很less需要。

你在寻找Iterable<String>吗?

 Iterable<T> <=> IEnumerable<T> Iterator<T> <=> IEnumerator<T> 

Iterable <T>

我相信Java的等价物是Iterable<String> 。 尽pipeString[]没有实现它,但是您仍然可以遍历元素:

 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()即lambdaexpression式中使用。

如果你想这样做,你应该得到它的分割器,并使用类StreamSupport()