【发布时间】:2011-09-08 19:33:34
【问题描述】:
有一个有序字符串列表要与另一个列表进行比较,我决定将其实现为一个映射,其中键是字符串的第一个字符,值是具有相同第一个字符的字符串列表。 简而言之,我有这样的东西:
var list1:Map[Char, List[String]] = Map('a' -> List("alone", "away"))
var list2:List[String] = List("I", "am", "alone", "at", "home", "watching", "batman", "XD")
现在,以这种方式实现了我的代码,很难与他们一起尝试将第一个列表视为一个简单的列表,所以我想知道是否有另一种更优雅的方法来解决这个问题。 如果我必须验证 list1 是否有“单独”,我必须首先获取密钥“a”,然后调用方法包含。我必须实现这样的事情。
if ( list1( "alone".charAt(0) ).contains( "alone" ) ) ...
每次都必须提取密钥然后比较列表是很难看的,我想创建一个新的地图(或列表)来实现这一点(它会自动提取密钥然后在列表)。 你有什么建议? 谢谢。
编辑:我重写了部分问题,澄清了一些观点。 第一个列表是有序的,第二个没有。
【问题讨论】:
-
你有有序字符串列表吗?还是一个有序的字符串列表?为什么你有这张奇怪的地图?为什么不使用简单的列表?
-
好吧,我有一个有序字符串的列表,我以这种方式实现了我的代码,相信它可以更快地进行搜索和替换以及其他一些事情。我的意思是,在较小的列表中搜索比在所有列表中搜索更快,不是吗?
-
您最好使用
Vector。这样的操作相当有效。 -
Vector有什么优势?没有关于 scala-lang 文档的描述。
-
我不熟悉 scala,但你能不能只使用集合及其操作? - 无论如何..在这种情况下排序列表,为什么不迭代一个列表,将每个元素与另一个列表中相同位置的元素进行比较? O(n)
标签: list scala collections map set