查找Java Collection中的所有匹配项

时间:2009-09-16 07:42:32

标签: java collections

确定。这是一个问题。这是我的收藏:{2,3,4,2,3,5}。我们假设它现在是List。我想在此集合中搜索'2'的所有匹配项。我想索引相同。我知道indexOf()lastIndexOf()中有ListArrays.binarySearch()种方法。但是,它们都返回一个元素,表示搜索元素的位置。有没有一种简单有效的方法来查找所有匹配项?请注意,此问题不仅限于原始类型。

7 个答案:

答案 0 :(得分:5)

除非对列表进行排序,否则不能使用binarySearch。如果它已排序,那么所有匹配项都在indexOf和lastIndexOf之间。

答案 1 :(得分:3)

遍历集合并手动检查每个元素。

答案 2 :(得分:3)

如果你想要所有的比赛,那么最直接的方式就是绕过它。

简单是最好的策略。

或者你有一些特殊的理由没有循环通过它?

答案 3 :(得分:3)

尝试Apache CollectionUtil类方法 countMatches

答案 4 :(得分:1)

为什么要找到索引?如果可能,请考虑使用列表以外的其他内容,例如允许重复的哈希表或排序列表,以便缩短搜索时间。否则,获取该整数的所有实例的唯一方法是使用for循环手动搜索。

答案 5 :(得分:1)

使用LambdaJ,您将拥有一个'封闭式'系统来编写您的案例。

答案 6 :(得分:0)

查看Bolts functional programming library。你可以用它进行过滤。