查找列表<Long>中与某个元素对应的所有索引的java方法
假设我有一个名为long
的X
和一个名为List<Long>
的foo
包含X
作为许多元素中的一个非唯一元素。我需要应用什么方法来查找foo
中与X
对应的所有索引。这个foo
不一定是经过排序的(但如果有一种特定的方法需要排序,那么一个好的答案可能会假设这一点——我对排序和未排序的情况都感兴趣)
例如,这可能是问题设置:
long X = 5L
List<Long> foo = new ArrayList<Long>();
foo.add(4L);
foo.add(5L);
foo.add(5L);
foo.add(6L);
foo.add(7L);
我希望该方法接受X
作为参数,并返回一个包含1
和2
索引的列表(或其他对象),因为它们对应于foo
中X
的位置
琐碎地
public static List<Long> locator(long target, List<Long> fooList) {
List<Long> output = new ArrayList<Long>();
for(int i = 0 ; i < foo.size() ; i++) {
if(foo.get(i) == target) {
output.add(i);
}
}
return output;
}
但是我想要一个更快的方法,以防我的foo
非常长
# 1 楼答案
尝试以下解决方案:
如果你的
List
是排序的,那么你有两个位置:firstIndex
和firstIndex + 1
从你的例子来看: