从类型映射中删除元素 (Int, ListBuffer(Int))
Removing elements from a map of type (Int, ListBuffer(Int))
我有 LinkedHashMap
个类型:
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中做到这一点?
如果您像现在这样定义地图,
val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))
您没有 key: Int
和 value: List[Int]
,但您有 key: Int
和 values: 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))
我有 LinkedHashMap
个类型:
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中做到这一点?
如果您像现在这样定义地图,
val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))
您没有 key: Int
和 value: List[Int]
,但您有 key: Int
和 values: 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))