Scala 正在从类型为(Int,ListBuffer(Int))的映射中删除元素
我有以下类型的LinkedHashMaps: val map1=LinkedHashMap1->1,2->1,2,3->1,2,3 val map2=LinkedHashMap2->2,3->2,3,5->2,3,5Scala 正在从类型为(Int,ListBuffer(Int))的映射中删除元素,scala,linkedhashmap,listbuffer,Scala,Linkedhashmap,Listbuffer,我有以下类型的LinkedHashMaps: val map1=LinkedHashMap1->1,2->1,2,3->1,2,3 val map2=LinkedHashMap2->2,3->2,3,5->2,3,5 其中整数是图的节点ID,列表是该节点的路径。我想实现删除节点的情况。假设我想删除节点3,我必须执行两个操作:删除每个映射中key=3的元素,删除列表中key=3的元素。如何在scala中执行此操作 如果你像以前一样定义你的地图 val map1 = LinkedHashMap(1
其中整数是图的节点ID,列表是该节点的路径。我想实现删除节点的情况。假设我想删除节点3,我必须执行两个操作:删除每个映射中key=3的元素,删除列表中key=3的元素。如何在scala中执行此操作 如果你像以前一样定义你的地图
val map1 = LinkedHashMap(1 -> 1, 2 -> (1,2), 3 -> (1,2,3))
您没有key:Int和value:List[Int],但有key:Int和value:Any
为了满足您的需求,您应该像下面这样定义地图
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
非常感谢。如果我的LinkedHashMap是图形中的顶点属性,该怎么办?要从每个节点的映射中删除节点3,我必须使用类似以下内容:graph.vertexts.filter{| case key,list=>key!=3&&!list.contains3},但这不是正确的语法。显然,顶点的类型是val顶点:RDD[VertexId,LinkedHashMap[Int,ListBuffer[Int]]
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))
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))