gpt4 book ai didi

java - 从列表中删除在另一个列表中索引的那些元素

转载 作者:行者123 更新时间:2023-11-29 07:54:01 25 4
gpt4 key购买 nike

List<Double> elements = new ArrayList<Double>();
List<Integer> usedElements = new ArrayList<Integer>();

for (int i=0; i<usedElements.size(); i++)
{
elements.remove(usedElements.get(i));
}

有一个名为 usedElements 的索引列表。我需要从 usedElements 中提到的列表 elements 中删除那些元素。如何以正确的方式做到这一点。

最佳答案

如果您知道您的 usedElements 列表是按升序排列的,最简单的方法就是按相反的顺序删除元素 - 这样“洗牌”效果就赢了'影响任何后续操作:

List<Double> elements = ...;
List<Integer> usedElements = ...;

for (int i = usedElements.size() - 1; i >= 0; i--) {
elements.remove(usedElements.get(i));
}

如果 usedElements 当前未排序,最好先对其进行排序。如果 usedElements 当前未排序并且您出于其他原因需要维护其当前顺序,则首先创建一个副本,然后对其进行排序:

List<Double> elements = ...;
List<Integer> usedElements = ...;
List<Integer> sortedUsedElements = new ArrayList<Integer>(usedElements);
Collections.sort(sortedUsedElements);

for (int i = sortedUsedElements.size() - 1; i >= 0; i--) {
elements.remove(sortedUsedElements.get(i));
}

或者甚至以相反的顺序对副本进行排序并使用增强的 for 循环:

List<Double> elements = ...;
List<Integer> usedElements = ...;
List<Integer> sortedUsedElements = new ArrayList<Integer>(usedElements);
Collections.sort(sortedUsedElements, Collections.<Integer>reverseOrder());

for (Integer index : sortedUsedElements) {
elements.remove(index);
}

关于java - 从列表中删除在另一个列表中索引的那些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com