2013-10-20 1 views
1

내가 키와 category: StringMap[String, Seq[Group]]Array[Group] 변환하려고 그룹스칼라 : 만들기 맵 [문자열, 서열 [그룹] 배열에서 [그룹]

class Group(id: Int, name: String, category: String) { 

} 

라는 클래스가 있습니다. Seq[Group] 빈을 만들고 키가 존재하지 않으면 Group을 추가하고 그렇지 않으면 Seq[Group]을 업데이트하십시오. 키가 이미있는 경우 Seq를 업데이트하는 방법을 잘 모르겠습니다.

답변

5

groupBy이 모두 해당합니다.

arrayOfGroups.groupBy(_.category) 

결과는 원래 컨테이너가 배열이기 때문에 Map[String, Array[Group]]이됩니다. 당신이 하나를 원한다면, 당신은

arraysOfGroup.groupBy(_.category).mapValues(_.toSeq) 

을 할 수 있도록 배열 당신은 더 이상 정확한 변환하여 toSeq를 교환 할 수는 정확히 서열이 아니다. 할 수도 있습니다 arrayOfGroup.toSeq.groupBy(_.category)