从类型的映射中删除元素(Int,ListBuffer(Int))

问题描述 投票:-2回答:1

我有类型的LinkedHashMaps:

val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3)) val map2 = LinkedHashMap(2 -> 2, 3 -> (2,3), 5 -> (2,3,5))

其中整数是图的节点ID,列表是该节点的路径。我想实现删除节点的情况。假设我要删除节点3,我必须做两个动作:在每个地图中删除key = 3的元素,删除列表中有3个的元素。如何在scala中执行此操作?

scala linkedhashmap listbuffer
1个回答
0
投票

如果你定义了你的地图,

val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))

你没有key: Intvalue: List[Int],但你有key: Intvalues: Any

scala> val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))
// map1: scala.collection.mutable.LinkedHashMap[Int,Any] = Map(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))

为了满足您的要求,您应该像以下一样定义您的地图,

scala> val map1 = LinkedHashMap(1 -> List(1), 2 -> List(1,2), 3 -> List(1,2,3))
// map1: scala.collection.mutable.LinkedHashMap[Int,List[Int]] = Map(1 -> List(1), 2 -> List(1, 2), 3 -> List(1, 2, 3))

现在,如果要删除节点3

scala> val map2 = map1.filter({
     |   case (key, list) => key != 3 && !list.contains(3)
     | })
// map2: scala.collection.mutable.LinkedHashMap[Int,List[Int]] = Map(1 -> List(1), 2 -> List(1, 2))
© www.soinside.com 2019 - 2024. All rights reserved.