我正在尝试制作一个arylylist,其中基本上是secondArr的行(这是一个二维的arraylist)。问题是当我的cScore.size() == 7 (or equal to secondArr.size(),
没有添加到allScore时,而是在所有(在这种情况下为21,myArr.size()=3
和secondArr.size()=7
。将值添加到一个索引,有没有人知道为什么会这样?代码似乎很简单却让我失望。所以最后我想要一个3列7行的arraylist(但在这种情况下只有1列和7行,以及一旦我开始工作,我将添加其余的。)
我的代码如下(这只是一个小小的问题):
int rowsNum = allScores.size();
int colsNum = allScores.get(0).size();
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(colsNum);
for (int rowIdx = 0; rowIdx < colsNum; rowIdx++) {
ArrayList<Integer> rows = new ArrayList<Integer>(rowsNum);
for (int colIdx = 0; colIdx < rowsNum; colIdx++) {
rows.add(allScores.get(colIdx).get(rowIdx)); {
}
result.add(rows);
}
//使用语法prov。由msi ....
原始数组allScores是: [[2,1,3],[3,1,2],[2,1,3],[3,1,2],[2,1,3],[3,1,2],[ 1,2,3]] 当它被转置时,它会重新进入 [[2,3,3,3,2,3,1],[2,3,3,3,3,3,1],[2,3,2,3,2,3,1],[ 2,3,2,3,2,3,1],[2,3,3,3,3,3,1],[2,3,2,3,2,3,1],[2, 3,2,3,2,3,1]]
答案 0 :(得分:0)
candScore.add(secondArr.get(j).get(k));
不应该是:
cScore.add(secondArr.get(j).get(k));
另外,我觉得你的两个嵌套循环应该是另一种方式。
for (int j=0; j< secondArr.size(); j++){
for (int k=0; k< myArr.size(); k++) {
答案 1 :(得分:0)
我不确定你的错误在哪里,但我的猜测是:
答案 2 :(得分:0)
我相信这就是你想要的。此代码转换了2d arraylists,因此列将成为行和行 换位后将成为专栏。
示例:
[[1 2 3], [4 5 6], [7 8 9]] -> [[1 4 7], [2 5 8], [3 6 9]]
此代码假定所有行/列具有相同的长度。
// arr2d is ArrayList<ArrayList<Integer>>
int rowsNum = arr2d.size();
int colsNum = arr2d.get(0).size();
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(colsNum);
for (int rowIdx = 0; rowIdx < colsNum; rowIdx++) {
ArrayList<Integer> rows = new ArrayList<Integer>(rowsNum);
for (int colIdx = 0; colIdx < rowsNum; colIdx++) {
rows.add(arr2d.get(colIdx).get(rowIdx));
}
result.add(rows);
}
...编辑(回答第1条评论)
我不明白你的观点。检查:
ArrayList<ArrayList<Integer>> arr2d = new ArrayList<ArrayList<Integer>>();
arr2d.add(new ArrayList<Integer>(2));
arr2d.add(new ArrayList<Integer>(2));
arr2d.add(new ArrayList<Integer>(2));
arr2d.get(0).add(1);
arr2d.get(0).add(2);
arr2d.get(1).add(3);
arr2d.get(1).add(4);
arr2d.get(2).add(5);
arr2d.get(2).add(6);
上面的为您提供:[[1, 2], [3, 4], [5, 6]] -> [[1, 3, 5], [2, 4, 6]]
转换。没有您正在谈论的行或列的副本。