我有一个 Iterable,我需要检查 iterable 中的特定字符串。我试过iter.contains("my string")
了,但它不起作用。任何的想法?
问问题
1220 次
5 回答
3
Iterable 是一个接口,它不包含像 contains 这样的方法,因为这会假设底层数据结构可以按顺序读取而不会损坏。
Iterable 接口所做的假设也不是。
于 2013-06-18T18:02:35.673 回答
3
你唯一真正的选择Iterable
是做一个裸for
循环:
for (String string : iterable) {
if (string.equals(foo)) {
return true;
}
}
return false;
...或者您可以调用另一种基本相同的方法,例如 Guava 的Iterables.contains(Iterable, Object)
.
于 2013-06-18T18:09:55.160 回答
2
Interface Iterable 只返回一个 Iterator。因此,如果某个值在里面,则无法直接获取。相反,您必须使用 for-each 结构进行迭代,例如
boolean found = false;
for (String s: iter) {
if (s.equals("my string")) {
found = true;
break;
}
}
根据大小,这可能不是很有效。但如果它是你唯一的选择……它至少会起作用。
于 2013-06-18T18:13:19.830 回答
0
尝试
iter.toString().toLowerCase().equals("my string")
于 2013-06-18T18:04:35.733 回答
0
尝试创建一个迭代器对象,在大多数编程语言中都有一个包含迭代器的方法
这是一个非常相似的问题 ,在 Scala 2.8 中为什么 Iterator 有 contains 方法但 Iterable 没有?
于 2013-06-18T18:05:27.670 回答