例如:
地图如下:
output = Map(执行 - > 1,() - > 2,for - > 1,in - > 1,brutalized - > 1,everyone - > 1,felt - > 1,基督 - > 1,全部 - > 1,锯 - > 1,哭 - > 1,它 - > 1,2 - > 1,a - > 2,男人 - > 1,i - > 3,to - > 1,cried - > 1,you - > 1,tuned - > 1,around - > 1,是> 1,其中 - > 1,小时 - > 1,如何 - > 1,电视转播 - > 1,我 - > 1,不是 - > 1,可能 - > 1,是 - > 1,激情 - > 1,我们 - > 1, sat - > 1,当 - > 1,像 - > 1, - > 2, - > 1,观看 - > 1,诉讼 - > 1, - > 3)类型[Any,Int]
List(pos)是从包含大量单词的文件创建的。可以在正面词语部分找到here。为了创建该列表,我使用了以下代码:
val words = """([A-Za-z])+""".r
val pos = scala.io.Source.fromFile("Positive_words.txt").getLines.drop(35).flatMap(words.findAllIn).toList
我注意到当列表与地图匹配时使用:
val result = output.filterKeys(pos.contains)
或
output.foreach { x => pos.foreach { aa => if(x._1.toString() == aa) <create a new hashmap>}}
会导致意外情况。有一些词虽然pos中不存在,但在输出中显示。
以下输出摘录:
val result = output.filterKeys(pos.contains)
结果:scala.collection.immutable.Map [Any,Int] = Map(in - &gt; 9,all - &gt; 1,a - &gt; 2,to - &gt; 1,around - &gt; 1,激情 - &gt; 1,喜欢 - &gt; 1, - &gt; 2, - &gt; 3) 这是打印一些不相关的项目,甚至不是list = pos。
的一部分
像in,all,to words这样的词语。
PS:如果在没有使用上述代码的情况下创建一个简单的列表(pos),输出就可以了。
答案 0 :(得分:1)
您可以使用地图filterKeys
仅保留pos
列表中存在的密钥,使用pos.contains
作为谓词:
val result = output.filterKeys(pos.contains)
result.foreach(println)
答案 1 :(得分:0)
我不知道这是否对你有帮助。但通常只有基元(boolean,int,每种类型的小写开头)都应与&#34; ==&#34;进行比较。所有其他对象都应该与.equals()进行比较,而String就是这样的对象。 也许你只是记住这一点。
答案 2 :(得分:0)
在创建列表时使用flatMap会产生问题。
通过使用以下代码而不是我之前编写的代码解决了这个问题:
check = False
For i = 2 To Rows.Count
For j = 1 To 50
Cells(i, 2).Value = i
If Cells(i, 1).Value = Cells(6, 6).Value Then
check = True
End If
Next j
If check = True Then
j = 1
End If
toAdd = True
Next i
感谢。