(这是this Q&A的变体)
说我有这个:
List( "foo", "bar", "spam" )
我想创建一个Map,其键为String的长度,值为所有具有该长度的String的Collection。换句话说,给定about列表,我们将得到:
Map( 3 -> List(foo, bar), 4 -> List(spam) )
我为此编写的代码是:
list.foldLeft(Map[Long, List[String]]()) {
(m, s) => m(s.length) = s ::
( if ( m.contains(s.length) ) m(s.length)
else Nil )
}
此方法有效,但在Daniel Spiewak为原始问题(上面已引用)提供的优雅答案中增加了很多麻烦。
有什么想法可以改善我的变体的解决方案吗?
谢谢!
肖恩
最佳答案
使用Scala 2.8.0:
list.groupBy(_.length)
没有比这更简单的了!
关于list - Scala将Collection转换为Key-key的最佳方法? (第二变种),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209687/