Java矢量容量找到矢量大小

我试图获取向量的内容。 我有一个类存储用户详细信息,如名称和密码:

package Login; /** * * @author Kutoma */ public class User{ private String name; private String password; public User(String aName, String password){ name = aName; this.password = password; } public boolean checkPassword(String pass) { if(password.equals(pass)) return true; else return false; } public String getName(){ return name; } public String getPassword(){ return password; } } 

然后我有一个名为setOfUsers的类,它添加用户并找到他们的名字:

 package Login; public class SetOfUsers extends Vector { private static SetOfUsers register = null; public SetOfUsers(){ super(); User temp = new User("Adam","12345"); add(temp); } public static SetOfUsers getInstance(){ if (register == null) { register = new SetOfUsers(); } return register; } public void addUser(User aUser){ super.add(aUser); } public User findUserByName(String name) { for(int i = 0; i < capacity(); i++){ User user = elementAt(i); if(user.getName().equals(name)){ return user; } } return null; } 

目前我收到此错误java.lang.ArrayIndexOutOfBoundsException:1> = 1但是,我已经使用容量来查找向量的大小,不知道我在哪里出错了。 单击登录按钮时,我的主程序具有以下代码,它应打印出用户详细信息

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: SetOfUsers register = SetOfUsers.getInstance(); String name = nameText.getText(); User user = register.findUserByName(name); String passTxt = passText.getText(); user = register.findUserByName(passTxt); System.out.print(user); } 

使用size()而不是capacity()。

容量():

返回当前容量(其内部数据数组的长度,保存在此向量的字段elementData中)

尺寸():

返回此向量中的组件数。

在这里查看文档。

您使用的capacity()size() 。 请参阅此SO答案,了解两者之间的差异: https : //stackoverflow.com/a/2787405/1370556 。

简而言之,您需要循环遍历size()

 for(int i = 0; i < size(); i++){ 

另外,您可能希望切换到ArrayLists。 请务必阅读Java中VectorArrayList之间的差异: 为什么Java Vector类被认为已过时或已弃用? 。