从HashMap的双端队列获取密钥

时间:2018-07-17 16:33:57

标签: java list dictionary data-structures

我有一个类似的双端队列:

@Getter
private Deque<Map<int, String>> cars = new LinkedList<>();

我只想用钥匙从地图双端队列中移除每辆车。像这样:

getCars().stream().forEach(car -> delete(car.keySet().iterator().next()));

是否有更好的方法来处理此问题,而不必使用interator().next()

1 个答案:

答案 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();
    }
}