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()
method:
for (Iterator<SomeType> it = elements.iterator(); it.hasNext(); ) {
SomeType e = it.next();
it.remove();
popped.add(e);
}
请注意,删除是一个可选操作,某些实现可能会抛出UnsupportedOperationException
(例如,由 Collection 返回的迭代器Collections.unmodifiable...()
will).
Edit: 仔细研究你的问题后,我认为你只需要这个:
elements.removeAll(elementsToRemove);
如果你的主要观点是你需要确切地知道which元素实际上已弹出,我认为您仍坚持原来的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)