我有一个Iterable,我需要检查iterable中的特定字符串。我试过了iter.contains("my string")
,但它不起作用。有什么想法吗?
答案 0 :(得分:3)
Iterable是一个接口,它不包含像contains这样的方法,因为这会假设基础数据结构可以按顺序读取而不会损坏。
Iterable接口的假设都没有。
答案 1 :(得分:3)
裸露的Iterable
唯一真正的选择是进行裸for
循环:
for (String string : iterable) {
if (string.equals(foo)) {
return true;
}
}
return false;
...或者你可以调用另一种基本相同的方法,例如:番石榴的Iterables.contains(Iterable, Object)
。
答案 2 :(得分:2)
Interface Iterable只返回Iterator。因此,如果某个值在内部,则无法直接获取。相反,你必须使用for-each结构进行迭代,例如
boolean found = false;
for (String s: iter) {
if (s.equals("my string")) {
found = true;
break;
}
}
根据尺寸,这可能不是非常有效。但如果它是你唯一的选择......它至少会起作用。
答案 3 :(得分:0)
尝试
iter.toString().toLowerCase().equals("my string")
答案 4 :(得分:0)
尝试创建一个迭代器对象,并且在大多数编程语言中都有一个包含迭代器的方法
这是一个非常相似的问题,已在此处得到解答 Why does Iterator have a contains method but Iterable does not, in Scala 2.8?