1

我正在尝试从文本文件构造一个 boolean[][] 。我正在读取每个字符,存储在一个 ArrayList 中(1 为真,0 为假)。我尝试了 ArrayList,但得到了编译错误,意外元素。因此,我构建了一个 ArrayList,并尝试将其存储在 ArrayList> 中。我的最后一个问题是以下方法中 boolean 和 Boolean 之间的类型差异。seedInProgress 是由 finishLine() 构造的 ArrayList>。我正在尝试将其全部复制到 for 循环内的 boolean[][] 中。

public void finishSeed(ArrayList<Boolean> lastLine) {
    finishLine(lastLine);
    seed = new boolean[seedInProgress.size()][seedInProgress.get(0).size()];
    for (int i = 0; i < seedInProgress.size(); i++ ) {
        seed[i] = seedInProgress.get(i).toArray()
    }
}

错误是:

SeedFactory.java:75: error: incompatible types
            seed[i] = seedInProgress.get(i).toArray();
                                                   ^
  required: boolean[]
  found:    Object[]
1 error

但我不能将它转换为 boolean[],而 Boolean[] 仍然是一个 Object[]。

如何从 ArrayList 中获取 boolean[],或者如何创建 ArrayList?

4

2 回答 2

4

要从. boolean[]_ ArrayList<Boolean>_ for_ _ Booleans.toArray

for循环是您所期望的:

boolean[] array = new boolean[list.size()];
for (int i = 0; i < list.size(); i++) {
  array[i] = list.get(i);
}
于 2013-09-13T20:03:33.863 回答
1

如果您希望如此,Java 不会一次自动装箱整个数组。IE

boolean b;
Boolean B;
a = B; // OK
boolean[] bs;
Boolean[] Bs;
bs = Bs; // compiler error

但你真的为什么要创造List<Boolean>第一个?我会简单地将该行作为字符串传递,因为它一个字符串。而且你的方法有点太复杂了——它做的太多了,知道的太多了。

看看这个方法是否有帮助:

public static boolean[] toBooleanArray(String line) {
    boolean[] array = new boolean[line.length()];
    for (int i = 0; i < line.length(); i++ )
        array[i] = line.charAt(I) == '1';
    return array;
}

然后您的文件可以转换为List<boolean[]>这样的:

List<boolean[]> lines = new ArrayList<boolean[]>();
// loop reading "line" from file
    lines.add(toBooleanArray(line));

然后得到一个boolean[][]

boolean[][] array = lines.toArray();
于 2013-09-13T20:03:50.953 回答