如何向2D数组添加行?

时间:2014-04-05 04:55:48

标签: java arrays

String loginInfo[][] = { { "mason", "dragon"   }, //First Column is usernames, second is passwords.
                         { "shay",  "stowers"  }, 
                         { "admin", "password" }, };

这是我的数组,第一个col中有用户名,第二个col中有密码。我希望能够在用户提交两个字符串后向该数组添加另一行。

示例...

String input1 =“username”,String input2 =“password”;

我想把这两个字符串作为一行添加到数组中。所以我的最终结果看起来像这样..

String loginInfo[][] = { { "mason",    "dragon"   },
                         { "shay",     "stowers"  },
                         { "admin",    "password" },
                         { "username", "password" }, };//This coming from input1 and input2

2 个答案:

答案 0 :(得分:1)

阵列不可更改。它们是最初给出的长度。您有两种选择:

  1. 创建一个新数组,增加其长度,然后将旧数组复制到新数组中。
  2. 使用Java已经为您完成所有这些操作的集合。查看列表。
  3. 编辑: 选项1的示例:

    string[ ][ ] newloginInfo = new int[loginInfo.length * 2][2];
    
    for (int i = 0; i < loginInfo.length; i++) {
        System.arraycopy(loginInfo[i], 0, newloginInfo[i], 0, loginInfo[0].length);
    }
    
    //now there is room for twice as many rows.  Add as usual.
    

    选项2的示例: 只需使用Generic列表而不是数组:

    List<List<of string>> list = new ArrayList<List<of String>();  
    

    然后你只需调用list.add添加一个新数组:

    List<of string> newrow = new ArrayList<of string>();
    list.add(newrow);
    

    道歉 - 未经过测试或抛入ide - 请检查语法。

    编辑2: Octopus建议有一个对象,然后存储这些对象的列表,这实际上是要走的路而不是处理多维数组 - 除非你有一个非常好的理由不使用它。它更干净,更有条理,您的IDE将在intellisense中获取详细信息。

答案 1 :(得分:1)

使用您的用户信息JavaBean的ArrayList的理想场所,如

List<UserInfo> userInfo = new ArrayList<UserInfo>();

每当您收到userNamepassWord时,请创建UserInfo的实例并将其添加到列表中

UserInfo类如下

class UserInfo{

 private String userName = null;

 private String passWord = null;

 // add a constructor
 public UserInfo(String userName, String passWord){
  this.userName = userName;
  this.passWord = passWord; 
 }

 //add setters and getters
 ...
 ...

}

检查出来。你会喜欢它

免责声明:未经测试。只是一个原型!