(这是对此问答的一种变体)
假设我有以下内容:
我已经编写了以下代码来实现这一点:
假设我有以下内容:
List( "foo", "bar", "spam" )
我希望创建一个Map,其中键为字符串的长度,值为所有具有该长度的字符串集合。换句话说,给定上述列表,我们将得到:
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提供的原始问题的优雅答案变得很丑陋(上面引用了原始问题)。
有没有什么想法来改进我的变体解决方案?
谢谢! Sean