【问题标题】:Filling 2d array填充二维数组
【发布时间】:2016-05-27 12:57:08
【问题描述】:

好吧,这可能是一个非常简单的解决方案,但我似乎找不到它。我有两个 ArrayList:

ArrayList<Candidate>partyList and ArrayList<Party>electoralList 

现在我想制作一个代表政党和候选人的 2d int 数组,如下所示:

p c
1 1
1 2
1 3
2 1
2 2
3 1
3 2
3 3 
etc.

我想我已经有正确的 for 循环来填充数组,但我只是错过了正确的公式。

int[][]ArrList;
for (int i=0; i<parties.size(); i++){ 
        for(int j=0; j<parties.get(i).getPartyList().size(); j++){
            ArrList[i][j]=

for 循环真的正确吗?那么填充数组的公式是什么?

【问题讨论】:

  • 我不太确定您的数据结构。 Candidate 到底是什么,Party 又是什么?这两个列表如何以任何方式连接?如何将Candidate 分配给Party
  • 第二维的尺寸应该是多少?有的政党有 3 名候选人,有的有 2 名候选人。剩下的单元格应该是什么?

标签: java arrays for-loop multidimensional-array nested-loops


【解决方案1】:

我将尝试根据我如何理解您在此处寻找的内容来回答这个问题。

  • 您应该首先了解这一点:
  • 二维数组由嵌套数组组成,即 ArrList[2][3] = [ [1,2,3], [1,2,3] ] ->第一个数字声明有多少个数组作为元素,第二个数字声明大小,或者如果您喜欢:数组元素的长度

  • 如果您正在寻找以数字代表候选人和政党。这是我的解决方案:

    int[][]ArrList = new int[parties.size()][electoral.size()]
    for (int depth=0; depth < parties.size(); depth++){ 
        for(int itemIndex=0; itemIndex<parties.get(depth).getPartyList().size(); itemIndex++){
            ArrList[depth][itemIndex]= itemIndex;
    

我希望这就是你要找的。​​p>

【讨论】:

    【解决方案2】:

    首先,ArrList 不应该有首字母大写(它不是类而是对象)。

    第二点(我认为困扰你的地方)是你没有初始化矩阵并且party.size() 总是0。我不确定,因为没有足够的代码。 你可以这样做

        int ROWS = 10;
        int COLS = 2;
        int [][] matrix = new int[ROWS][];
        for(int i=0; i< matrix.length; i++){
            matrix[i] = new int[COLS];
        }
    

    或者,使用列表

        int ROWS = 10;
        int COLS = 2;
        List<List<Object>> matrix = new ArrayList<>(ROWS);
        for (int i = 0; i < ROWS; i++) {
            ArrayList<Object> row = new ArrayList<>(COLS);
            for (int j = 0; j < COLS; j++) {
                row.add(new Object());
            }
            matrix.add(row);
        }
    

    【讨论】:

      【解决方案3】:
      int[][] arrList=new int[parties.size()][2];
          int i=0,j=0,k=0;
          for(;i<parties.size();i++,j++){
              if(j==1){
                  arrList[k][j]=electoralList .get(--i);
                  j=-1;
                  k++;
              }
              else{
                  arrList[k][j]=parties.get(i);
              }
          }
          arrList[k][j]=aarM.get(electoralList .size()-1);
      System.out.println(Arrays.deepToString(arrList));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多