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() 。