2011-06-27 86 views
1

让我们说我们有一个集合的集合,这会导致表数据结构。翻译Java中的集合集合

Collection<Collection<T>> table; 

哪种方法可以用来将“行”转换为使用Java的“列”?

编辑:

val_11 val_12 val_13 val_14 
val_21 val_22 val_23 val_24 
val_31 val_32 val_33 val_34 

should be translated to 

val_11 val_21 val_31 
val_12 val_22 val_32 
val_13 val_23 val_33 
val_14 val_24 val_34 
+0

都是相同大小的集合?或者是否有最大尺寸? – sfussenegger

+0

哦,是的,并试图在你的问题一般更具描述性。问题越好,回答越好。 – sfussenegger

+0

是的,我们可以假设集合具有相同的大小。没有最大尺寸。 – jilt3d

回答

1
是假定集合的集合代表一个矩阵

移调方法:

public List<List<T>> transpose(Collection<Collection<T>> table) { 
    boolean init = false; 

    List<List<T>> result = new ArrayList<List<T>>(); 
    for (Collection<T> row: table) { 
     if (!init) { 
      for(int i = 0; i < row.size(); i++) 
       result.add(new ArrayList<T>(table.size()); 
      init = true; 
     } 

     for(int i = 0; i < row.size(); i++) 
      result.get(i).add(row.get(i)); 
    } 

    return result; 
} 
0

如果你使用一个GuavaTable而非Collection<Collection<T>>,你” d能够使用Tables.transpose来创建切换了行键和列键的表格视图。当然,你需要处理你的行和列的键(可能是整数),而不是完全没有行或列键。