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
的索引列表。我需要从列表elements
中删除在usedElements
中提到的那些元素。如何以正确的方式做到这一点。 最佳答案
您可能会发现,创建新列表比尝试修改原始列表更容易:
Set<Integer> used = new HashSet<>(usedElements); // maybe use a set in the
// first place?
List<Integer> newElements =
new ArrayList<>(elements.size() - used.size());
for (int i = 0; i < elements.size(); i++) {
if (!used.contains(i))
newElements.add(elements.get(i));
}
elements = newElements;
整个过程为O(n)。