有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在“2D ArrayList”中添加列`

我正试图弄清楚如何在2D ArrayList的最右边添加一个额外的列,但运气不好。我的方法addCol()无限地运行循环,没有停止。我有以下资料:

BAC
BEC
BEA
BAB

但为什么我的方法无限运行。无论如何,我也包括了我的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);
    }
}

班级董事会

     private ArrayList<ArrayList<T>> myBoard = new ArrayList<ArrayList<T>>();
     public String toString(){
          String result = "";
          for(int i = 0; i < myBoard.size(); i++){

              }
              result += "\n";
          }

          return result;
      }

共 (2) 个答案

  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); 
      }
    
  2. # 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);