我有以下代码:
public ArrayList[] username = new ArrayList[1];
public ArrayList[] password = new ArrayList[1];
public void save(String username, String password){
String uname = userField.getText();
String pword = passField.getText();
username.add(uname);
password.add(pword);
}
我正在尝试制作ArrayList
个用户名和密码(使用Window Builder),并在有人想要创建新用户/密码时添加它。但是我得到一个错误,说“对于String类型,方法add(String)是未定义的。”
如何修复以及如何修复,以便在添加新用户时数组列表的大小会增加?
答案 0 :(得分:2)
public ArrayList[] username = new ArrayList[1];
创建一个ArrayList
数组。你想要的是一个字符串的ArrayList。
public ArrayList<String> usernames = new ArrayList<String>();
优良作法是“编程到接口”,在这种情况下usernames
是一个List,其实现恰好是一个ArrayList。
public List<String> usernames = new ArrayList<String>();
答案 1 :(得分:2)
为什么要在两个不同的列表中维护用户名和密码?
您的假设是基于匹配两个列表的索引,然后获取一个特定用户的用户名和密码。
你应该避免这样做。使用更合适的数据结构,如地图,它维护键和值之间的映射。
public class UsernamePassword
{
private Map<String, String> map = new HashMap<String, String>();
public void save(String username, String password){
String uname = userField.getText();
String pword = passField.getText();
map.put(unmae, pword);
}
}
答案 2 :(得分:0)
希望你使用与泛型(1.5或更高版本)兼容的java版本。你应该像String一样给出类型参数字符串。
您还可以创建用户类
public class User{
String uname;
String pwd;
public User(u,p){
uname=u;
pwd=p;
}
}
并在主类
中创建这些用户对象的ArrayListArrayList<User> list=new ArrayList<>();
将这些用户对象与从字段中检索到的值添加到列表
list.add(new User(uname,pword))