[英]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);
}
完毕。
使用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.