gpt4 book ai didi

java - Scala中的迭代器删除

转载 作者:行者123 更新时间:2023-11-29 08:30:19 25 4
gpt4 key购买 nike

由于迭代器没有删除方法,我如何将其转换为 Scala?
iter 定义如下:

Iterator<Integer> iter = cache.keySet().iterator();

其中缓存是一个hashmap

while (iter.hasNext()) {
int num = iter.next();
if (!part.contains(num)){
iter.remove();
}
}

最佳答案

如果您的实际目标是从缓存中过滤一些键,您可以直接执行此操作,无需循环和迭代器:

val cache = Map("a" -> 3, "b" -> 5, "c" -> 7)
val part = Set("x", "y", "b")
val filteredCache = cache.filter{ case (k, _) => part.contains(k) }
// prints `Map(b -> 5)`, because "a" and "c" not in `part`
println(filteredCache)

编辑

正如@SymY4 完全正确地指出的那样,filterfilterKeys 的行为完全不同:filter 返回一个新的 Map(不可变版本),或者就地过滤元素(可变版本)。但是,filterKeys 仅构建原始集合的过滤 View 。因此,反复调用 filterKeys 是不可取的,因为它会堆叠越来越多的 View 。

但是,带有filter 的解决方案应该仍然有效。

关于java - Scala中的迭代器删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48873613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com