我想知道是否可以将对象存储到用户想要的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);
答案 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。