JDK 或 apache commons 中是否有一种方法可以从 java.util.List 中“弹出”元素列表?我的意思是,删除元素列表并返回它,就像这个方法:
public Collection pop(Collection elementsToPop, Collection elements) {
Collection popped = new ArrayList();
for (Object object : elementsToPop) {
if (elements.contains(object)) {
elements.remove(object);
popped.add(object);
}
}
return popped;
}
最佳答案
如果您正在寻找类似堆栈的结构,我建议您接受 Deque
(LinkedList
是最常见的实现)而不是 Collection
.
如果您实际上不需要将其视为堆栈,只需从 Collection
中获取一个迭代器即可并使用 remove()
方法:
for (Iterator<SomeType> it = elements.iterator(); it.hasNext(); ) {
SomeType e = it.next();
it.remove();
popped.add(e);
}
请注意,移除是一个可选操作,某些实现可能会抛出 UnsupportedOperationException
。 (例如,Collections.unmodifiable...()
中的集合返回的迭代器将)。
编辑:仔细查看您的问题后,我认为您只需要这个:
elements.removeAll(elementsToRemove);
如果您的主要观点是您需要确切地知道哪些 元素实际被弹出,我认为您坚持使用原始代码。
关于java - 如何从 Java 中的集合中弹出项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998848/