簡體   English   中英

從java中的arraylist中刪除具有多個索引的多個元素

[英]Remove multiple elements with multiple indexes from arraylist in java

我有兩個 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]

您應該在最后添加:

  Collections.reverse(indexes); 
    for(Integer index : indexes){
        items.remove((int)index);
    }
  1. 使用索引反轉列表,因為當您從 1 到 n 刪除下一個字母時更改索引號,而當您想要刪除索引“3”時,您實際上刪除了索引“4”。
  2. 遍歷要刪除的索引。
  3. 將 Integer 轉換為 int - remove(int index)

完畢。

使用java流API的解決方案,

IntStream.range(0, items.size()).filter(i -> !indexes.contains(i)).mapToObj(items::get)
                .collect(Collectors.toList())
 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是您想要刪除那些具有由數組itemIndices指定的索引的項目的列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM