我有一个类似的双端队列:
@Getter
private Deque<Map<int, String>> cars = new LinkedList<>();
我只想用钥匙从地图双端队列中移除每辆车。像这样:
getCars().stream().forEach(car -> delete(car.keySet().iterator().next()));
是否有更好的方法来处理此问题,而不必使用interator().next()
?
答案 0 :(得分:1)
removeIf
方法应该可以解决问题:
int keyToDelete = 7; // Arbitrary number
cars.removeIf(m -> m.containsKey(keyToDelete));
编辑:
在早期的Java版本中,同样的功能也是可能的,尽管语法会更笨拙-您必须获取列表的迭代器,然后遍历它,评估每个项目:
int keyToDelete = 7; // Arbitrary number
Iterator<Map<Integer, String>> iter = cars.iterator();
while(iter.hasNext()) {
Map<Integer, String> map = iter.next();
if (map.containsKey(keyToDelete)) {
iter.remove();
}
}