2014-12-29 6 views
0

스칼라 일람 그룹화 및 그룹화 감산하며 값 샘플 데이터 이하

val combineList = List(("A",12),("B",11),("C",12),("D",14),("E",23),("F",12),("D",53),("C",23),("B",12),("A",22),("E",21),("F",12),("C",21),("B",34),("A",34),("G",67),("D",23),("E",21),("F",12),("D",31),("B",41),("E",14),("F",15),("G",18),("A",11),("C",10),("D",9),("A",13),("E",1),("F",14)) 

val X = 98 

이제 다음과 같이 최종 출력을 원하는

아래의 모든 값에 의해

제 기

val groupKey = List(Map("A"->List(12,22,34,11,13)),Map("B"->List(11,12,34,41)),Map("C"->List(12,23,21,10)),Map("D"->List(14,53,23,31,9)), 
Map("E"->List(23,21,21,14,1)),Map("F"->List(12,12,12,15,14)),Map("G"->List(67,18))) 

Seco 차 목록 값보다 항상 gretter 여기 X 그래서 두 번째 출력

val substrackValues = List(Map("A"->List(86,76,34,87,85)),Map("B"->List(87,86,34,57)),Map("C"->List(86,75,77,88)),Map("D"->List(84,45,75,31,89)), 
Map("E"->List(75,77,77,84,97)),Map("F"->List(86,86,86,15,84)),Map("G"->List(31,80))) 
+1

답안을 수락 된 것으로 표시하는 것은 잊지 말아야합니다. – Gangstead

답변

3

가 고려로 될 것입니다 groupKey 목록 값에서 X을 빼지 groupKey에 포함 된지도

Map(E -> List(75, 77, 77, 84, 97), F -> List(86, 86, 86, 83, 84), A -> List(86, 76, 64, 87, 85), G -> List(31, 80), B -> List(87, 86, 64, 57), C -> List(86, 75, 77, 88), D -> List(84, 45, 75, 67, 89)) 

참고를 제공

combineList.groupBy(_._1).mapValues(xs => xs.map(v => X-v._2)) 

위의 그림은 싱글 톤지도가 있습니다. l [(String,List[Int])]의 튜플로 표시되거나 하나의 맵으로 더 잘 집적됩니다.

첫 번째 튜플 요소로 그룹화 한 다음 제안 된 솔루션에서 각 목록의 각 요소를 X 값으로 변환합니다.

+0

코드에서 작동하지만 약간 변경되었습니다. combineList.groupBy (_._ 1) .mapValues ​​(xs => xs.map (v => X-v._2))' – Yogesh

+0

@yogesh thanks heap! :) 업데이트 됨 ... – elm