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