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