在`2D ArrayList`中添加一列

时间:2015-09-06 03:50:55

标签: java arraylist

我正在试图弄清楚如何在TOP 3 points | names --------------------------- 18 | mike 19 | tim 20 | joe, mike, tina 的最右边添加一个额外的列而没有运气。我的方法2D ArrayList无限制地运行循环。我有以下内容:

addCol()

但为什么我的方法无限运行。在任何情况下,我都包含了我的BAC BEC BEA BAB 方法。

Class Tester

toString()

班级董事会

import java.util.*;
public class Tester {

    public static void main(String[] args){

        String[][] myString = {{"A", "B", "C"}, {"A", "A", "A"}, {"B", "A", "C"}, {"B", "E", "C"}, {"B", "E", "A"}, {"B", "A", "B"}};

    //  board.addRow();
        board.addCol();
        System.out.println(board);
    }
}

2 个答案:

答案 0 :(得分:2)

循环

for(int i = 0; i < myBoard.size(); i++){
    myBoard.add(col);
} 

不是你的意思。每次迭代,您都会添加到myBoard,因此myBoard.size()增加1,而i永远不会赶上它。

你必须是这样的意思

for(int i = 0; i < myBoard.size(); i++){
    myBoard.get(i).add(null);
}

或者,甚至更好

for (List<T> list : myBoard)
    list.add(null);

答案 1 :(得分:1)

 public void addCol(){
          ArrayList<T> col = new ArrayList<T>();

          for(int i = 0; i < myBoard.size(); i++){
              myBoard.add(col);
          }  
      }

仔细查看您的方法。您添加的是行而不是myBoardArrayList列表的列。

您需要修改您的方法。请关注评论

 public void addCol(){
              ArrayList<T> row = new ArrayList<T>();// row

              T t = new T();   // column
              T t2 = new T();// column    
              row.add(t)/ adding column

              row.add(t2)/ adding another column and so on
              myBoard.add(row); // now adding whole row to myBoard

              for(int i = 0; i < myBoard.size(); i++){
                  myBoard.add(col);
              }  
          }

这将立即添加列。如果你想添加到特定的行,你需要先了解索引

public void addCol(int index ){
      T col = new T();// create or receive in method params           
      myBoard.get(index).add(col); 
  }