Попробуйте, чтобы получить именно то, что вы хотите в указанном вами порядке. (то есть, порядок сохраняется в списке при подсчете):
x.distinct.map(v=>(x.filter(_==v).size,v))
В SCALA REPL:
scala> val x = List("c", "b", "b", "c", "a", "d", "c")
x: List[String] = List(c, b, b, c, a, d, c)
scala> x.distinct.map(v=>(x.filter(_==v).size,v))
res225: List[(Int, String)] = List((3,c), (2,b), (1,a), (1,d))
scala>