Удалить несколько элементов с несколькими индексами из массива в Java - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть два List2.Я храню элементы в одном списке, а во втором - я храню целые числа, которые я считаю индексами.

Я хочу удалить элементы из списка элементов со всеми индексами.

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]

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Решение с использованием API потока Java,

IntStream.range(0, items.size()).filter(i -> !indexes.contains(i)).mapToObj(items::get)
                .collect(Collectors.toList())
0 голосов
/ 17 февраля 2019
 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);
    }

Вот, пожалуйста.Удалить из массивов запуски самого большого индекса:)

0 голосов
/ 17 февраля 2019

Вы должны добавить в конце:

  Collections.reverse(indexes); 
    for(Integer index : indexes){
        items.remove((int)index);
    }
  1. Обратный список с индексами, потому что при удалении от 1 до n следующая буква меняет индексные номера, а когда вы хотите удалить индекс "3", выдействительно удалить индекс "4".
  2. Цикл по индексам, которые вы хотите удалить.
  3. Приведите Integer к int - remove (int index) .

Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...