Предположит, что у меня есть long
под названием X
и List<Long>
под названием foo
, который содержит X
как один не уникальный элемент среди многих элементов. Какой метод я должен применить, чтобы найти все индексы в foo
, которые соответствуют X
. Этот foo
не обязательно сортируется (но хороший ответ может принять это, если есть конкретный метод, который требует сортировки - меня интересуют как отсортированные, так и несортированные случаи).метода, чтобы найти все индексы в списке <Long>, соответствующие некоторый элемент
Например, это может быть установка проблема:
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
, так как они соответствуют к местоположению X
в пределах foo
.
Тривиально,
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
является гигантски долго.
Что вы подразумеваете под более эффективным способом? Ваш список всегда отсортирован? –
@RohitJain Что-то, что работает быстрее, чем мой метод для больших списков. Мой список может сортироваться или не сортироваться. Я хочу получить ответы как на несортированные, так и на сортированные случаи. – user2763361
Я не думаю, что вы можете получить лучше, чем 'O (n)'. –