我有一个地图,我想从值中删除条目

时间:2017-07-24 13:49:49

标签: scala

我有一个地图(WeakHashMap),我正在使用它进行一些缓存。我想根据值删除地图中的一些条目。 我无法找到办法做到这一点。

1 个答案:

答案 0 :(得分:1)

简单的方法是使用基于密钥的过滤器和过滤器。这将创建一个新的Map而不是修改原始的Map。

val newMap = map.filter((key, value) => <true/false based on value>)

如果可以构建您的应用程序以使用它,我会推荐它。

如果您需要从可变地图中删除元素(修改原始地图而不是创建新地图,您应该使用foldLeft在地图上循环并创建与要删除的值对应的键列表

val keyList = map.foldLeft(List[KeyType]())((keys, pair) => if(pair._2 <should be removed>) pair._1 :: keys else keys)
keyList.foreach(map.remove)

pair是当前元素的元组_1是键,_2是值