У меня есть два List2. Я храню элементы в одном списке, а во втором списке я храню числа int, которые считаю индексами.
Я хочу удалить элементы из списка элементов со всеми индексами.
ArrayList<String> items = new ArrayList<String>();
ArrayList<Integer> indexes = new ArrayList<Integer>();
items.add("a");
items.add("b"); // should be removed
items.add("c");
items.add("d"); // should be removed
items.add("e");
items.add("f"); // should be removed
items.add("g");
items.add("h");
indexes.add(1);
indexes.add(3);
indexes.add(5);
Output : items : [a,c,e,g,h]




Вы должны добавить в конце:
Collections.reverse(indexes);
for(Integer index : indexes){
items.remove((int)index);
}
Сделанный.
Решение с использованием API потока Java,
IntStream.range(0, items.size()).filter(i -> !indexes.contains(i)).mapToObj(items::get)
.collect(Collectors.toList())
Shaunak Patel... Большое спасибо, что нашли время, чтобы сделать это.
public static void filter(List<String> list, List<Integer> indexesToRemove){
Collections.reverse(indexesToRemove);
for (Integer indexToRemove : indexesToRemove) {
list.remove((int)indexToRemove);
}
}
public static void main(String[] args) {
ArrayList<String> items = new ArrayList<String>();
ArrayList<Integer> indexes = new ArrayList<Integer>();
items.add("a");
items.add("b"); // should be removed
items.add("c");
items.add("d"); // should be removed
items.add("e");
items.add("f"); // should be removed
items.add("g");
items.add("h");
indexes.add(1);
indexes.add(3);
indexes.add(5);
filter(items, indexes);
System.out.println(items);
}
Ну вот. Удалить из массивов начало самого большого индекса :)
Для всех, кто застрял и попал на эту страницу, но ваши индексы были не Список индексов, а массивом индексов. Эта страница была полезна, но я немного подправил ответы, и это сработало. Код ниже
Arrays.sort(itemIndices, Collections.reverseOrder());
for (int i : itemIndices) {
uriCache.add(mediaUris.remove(i));
}
Примечание: ItemIndices представляет индексы позиций в списке, которые вы хотите удалить. uriCache не нужен, я использовал его в своем коде для хранения списка удаленных элементов (которые, кстати, были URI). mediaUris — это список, из которого вы хотите удалить элементы с индексами, указанными в массиве itemИндексы.
Прочтите Как задать хороший вопрос