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)。

10-08 09:41