繁体   English   中英

用Java翻译集合的集合

[英]Translate collection of collections in 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

假定集合的集合表示一个矩阵的Transpose方法:

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;
}

如果要使用Guava Table而不是Collection<Collection<T>> ,则可以使用Tables.transpose创建具有切换的行键和列键的表视图。 当然,您需要处理行和列的键(可能是整数),而不是根本没有行或列键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM