我在获取列表的元素时遇到了一个非常奇怪的问题
下面是我将参数作为"bc“和"mn”传递的代码片段。
val list1 = List("abc", "def", "mnp")
val list2 = List(args(0), args(1))
val header1=list1.filter(x => list2.exists(y => x.contains(y)))
println(header1)Output-List("abc","mnp")
我正在尝试一种不同的方法(通过传递相同的参数),但得到了一个空列表
val list1 = List("abc", "def", "mnp")
//val list2 = List(args(0), args(1))
val ipList1= new ListBuffer[Any]
for(i <- 0 to 1){
ipList1 +=args(i)
}
val list2=ipList1.toList
println(list2)
val header1=list1.filter(x => list2.exists(y => x.contains(y)))
println(header1)输出列表(bc,mn)
List ()-->这是我得到的空列表
有没有人能告诉我哪里做错了,怎么改正?
发布于 2019-12-09 21:25:55
问题是您使用的是ListBufferAny,因此元素丢失了从String到Any的类型信息,显然这改变了代码的语义。
您可以这样做:
val ipList1 = new ListBuffer[String]
for (i <- 0 to 1) {
ipList1 += args(i).toString
}
val list2 = ipList1.toList或者更好的是:
val list2 = args.slice(0, 2).toListhttps://stackoverflow.com/questions/59249758
复制相似问题