2014-11-08 2 views
0
List((1070071808,"NA",1077477376), (1070071808,aggr1,1077477376), 
(1070071808,aggr1,1077477376), (1070071808,aggr1,1077477376), 
(1070071808,aggr1,1077477376), (1070071808,aggr1,1077477376), 
(1070071808,aggr1,1077477376), (1070071808,aggr1,1077477376)) 

두 번째 요소가 "NA"가 아닌 경우 usedBytes를 추가하려고합니다. 초 값이 같지 않음 여기서 내 예상 출력 전체 목록 소자로부터 제 값스칼라를 사용하여 키가없는 경우 목록 요소를 분리하는 방법은 무엇입니까?

usedSpace = 합과 같다리스트에서 첫번째 값

여유 공간 = 합 초 값이 "NA"가 "NA".

관용적 인 스칼라 함수를 사용하여 어떻게 얻을 수 있습니까 ??

답변

7
val list = List((1070071808, "NA", 1077477376), (1070071808, "aggr1", 1077477376), 
    (1070071808, "aggr1", 1077477376), (1070071808, "aggr1", 1077477376), 
    (1070071808, "aggr1", 1077477376), (1070071808, "aggr1", 1077477376), 
    (1070071808, "aggr1", 1077477376), (1070071808, "aggr1", 1077477376)) 

val (free, used) = list.partition(_._2 == "NA") 
val freeSpace = free.foldLeft(0L)(_ + _._1) // uses Long to avoid overflow 
val usedSpace = used.foldLeft(0L)(_ + _._1) 
관련 문제