我有一个看起来像这样的双端队列:@Getter
private Deque<Map<int, String>> cars = new LinkedList<>();我想只使用钥匙从地图的双端队列中删除每辆车。所以像这样:getCars().stream().forEach(car -> delete(car.keySet().iterator().next()));有没有更好的方法来处理这个问题,而不必使用interator().next()?
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
该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();
}
}
添加回答
举报
0/150
提交
取消