用户输入Arraylist

时间:2012-12-27 20:34:35

标签: java arraylist bluej

我想知道是否可以将对象存储到用户想要的arraylist中。对于我的程序,它通过“帐号”将用户数据存储到他们选择的单元格中,但每次我输入一个新的帐号时,它表示该数组基本上不够大。这是我的代码。如果有人能提供帮助,那将不胜感激。

ArrayList <Account> account = new ArrayList<Account>();
int accountNumber;
String nCity;
String nState;
String nZipCode;
String nLastName;
String nAddress;
String firstName;
String nAccount;

public void newAccount()
{
    Account a = new Account();
    a.firstName = JOptionPane.showInputDialog("What's your first name?");
    a.nLastName = JOptionPane.showInputDialog("What's your last name?");
    a.nAddress = JOptionPane.showInputDialog("What's your current address?");
    a.nCity= JOptionPane.showInputDialog("What's your current city?");
    a.nState = JOptionPane.showInputDialog("What's your current State?");
    a.nZipCode = JOptionPane.showInputDialog("What's your current Zip Code?");
    String num = JOptionPane.showInputDialog("What do you want your account number to be?");
    accountNumber = Integer.parseInt(num);
    account.add(accountNumber, a);

3 个答案:

答案 0 :(得分:2)

使用HashMap并使用帐号作为密钥

    Map<Integer,Account> account =new Hashmap<Integer,Account>();
    account.put(accountNumber,a);

答案 1 :(得分:1)

您已创建ArrayList<Account>,并且您正在以key-value对的形式向其中添加元素。

如果您想添加这种方式,可能需要HashMap: -

Map<Integer, Account> accounts = new HashMap<Integer, Account>();

然后,要在其中添加条目,您可以使用Map#put()方法: -

accounts.put(accountNumber, a);

答案 2 :(得分:1)

同意上述有关使用地图的建议。

您的“数组不够大”仅仅是因为您尚未初始化索引时尝试指定List的索引。

简单地说,您正在使用List的这种方法:

add(int index,E element)           将指定元素插入此列表中的指定位置。

关键字是INSERT。 所以,想象一下如果你的“accountNumber”是100,并且你之前没有99个元素,那么尝试插入将在逻辑中没有任何意义,因为你无处插入。

JavaSE6 API在此方法下说:

IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; size())

顺便说一句,除了使用Map之外,另一个解决方案(如果可用)是将accountNumber作为另一个Account字段,您可以使用单参数add()方法立即使用List。