2016-12-04 7 views
0

구아바 테이블을 통과하는 방법은 무엇입니까? 내가구아바 테이블에서 어떻게 트래버스 할 수 있습니까

0 --> 1 [16, 48, 32] 
0 --> 2 [38, 19, 17, 28, 48] 
0 --> 3 [37, 41, 31, 16] 

1 --> 0 [19, 24, 37, 11, 14, 32] 
1 --> 2 [45, 15, 37, 22] 
1 --> 3 [22, 31, 16, 28, 33, 37] 

2 --> 0 [15, 23, 49, 35] 
2 --> 1 [48, 35, 21, 39] 
2 --> 3 [24, 46, 22, 24, 41] 

3 --> 0 [48, 11, 17, 25, 29] 
3 --> 1 [34, 49, 19, 28] 
3 --> 2 [49, 11, 47, 31] 

내가 행 값과 열 값과 그 차이의 합계를 찾으려면 이러한 테이블을 가지고있다. 예를 들면 다음과 같습니다. 당신은 당신이 쉽게 rowKey/columnKey에 의해 행/열 값의 컬렉션을 얻을 수 있습니다 구아바의 Table 데이터 구조를 사용하는 경우

[(0-->1)+(0-->2)+(0-->3)]-[(1-->0)+(2-->0)+(3-->0)]

답변

0

. 예를 들면 : 당신이 행/열 합계를 다음 자바 (8)의 스트림 API를 사용할 수없는 경우

Random random = new Random(); 
ImmutableTable.Builder<Integer, Integer, Integer> builder = ImmutableTable.builder(); 
for (int rowKey = 0; rowKey < 4; rowKey++) { 
    for (int columnKey = 0; columnKey < 4; columnKey++) { 
     builder = builder.put(rowKey, columnKey, random.nextInt(100)); 
    } 
} 
ImmutableTable<Integer, Integer, Integer> table = builder.build(); 

int rowSum = table.row(0).values().stream().mapToInt(Integer::intValue).sum(); 
int columnSum = table.column(0).values().stream().mapToInt(Integer::intValue).sum(); 
int difference = rowSum - columnSum; 

여전히 원하는 행/열에서 값을 얻을 수 table.row(rowKey).values()/table.column(columnKey).values()를 사용하고 그 합계를 자신 만의 방법을 쓸 것 값.