2

考虑这段代码

val map = new HashMap[(String, String), Set[(String, Int, Double, Int)]] 
        with MultiMap[(String, String),     (String, Int, Double, Int)]

有没有办法在不重复类型参数定义的情况下使用 Multimap 特征?

4

1 回答 1

8

您可以使用类型别名来减少重复

type K = (String, String)
type V = (String, Int, Double, Int)

然后你的地图变成

val map = new HashMap[K, Set[V]] with MultiMap[K, V]

然而,作为一种风格规则,我认为在代码中大量使用TupleN特征并不是一个好主意,原因如下:

  • 它们更难重构(例如,如果您需要额外的字段)
  • 它们代表什么不太明显

考虑到创建定制类的开销只有:

case class K(p1: String, p2: String)

这通常是值得的!

于 2012-08-27T23:23:17.967 回答