我正在寻找一个包含类似迭代的方法

时间:2013-06-18 17:56:32

标签: java contains iterable

我有一个Iterable,我需要检查iterable中的特定字符串。我试过了iter.contains("my string"),但它不起作用。有什么想法吗?

5 个答案:

答案 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?