我想在运行时向数组添加数据,但是我得到一个超出绑定异常的索引。
String addmembers[] = new String[0];
for (int i=0; i<contactClassList.size(); i++) {
MyClass values = contactClassList.get(i);
String name = values.getUsernameEmail();
Boolean isChecked = values.isChecked;
if (isChecked) {
addmembers[addmembers.length] = name;
}
System.out.println("Value of Array===" + addmembers.length);
}
答案 0 :(得分:7)
您无法添加到数组。一旦你创建它,它的大小是固定的。您最好使用ArrayList
,只需拨打add
。
List<String> newMembers = new ArrayList<String>();
for (MyClass entry : contactClassList) {
if (entry.isChecked) {
newMembers.add(entry.getUsernameEmail());
}
}
System.out.println(newMember.size());
答案 1 :(得分:1)
您的数组addmembers
大小为[0],一旦创建无法更改,为什么不使用List
,因为它的动态大小
List<String> addmembers = new ArrayList<String>();
for(int i=0;i<contactClassList.size();i++){
MyClass values = contactClassList.get(i);
String name = values.getUsernameEmail();
Boolean isChecked = values.isChecked;
if(isChecked){
addmembers.add(name);
}
System.out.println("Value of Array==="+addmembers.length);
}
这样的事情可以解决你的问题。
答案 2 :(得分:1)
ArrayList是解决此类问题的正确数据结构。如果您必须使用数组以及您需要的增长能力,那么请使用此类解决方案Most memory efficient way to grow an array in Java?
答案 3 :(得分:1)
不要将数组用于更多数据量。如果使用ArrayList会更好。我想纠正你的错误并给你这个答案。您已将String数组大小设置为0并尝试添加不可能的元素。因此,请在上面的代码contactClassList.size()
String addmembers[] = new String[contactClassList.size()];
for(int i=0;i<contactClassList.size();i++){
MyClass values = contactClassList.get(i);
String name = values.getUsernameEmail();
Boolean isChecked = values.isChecked;
if(isChecked){
addmembers[addmembers.length]=name;
}
System.out.println("Value of Array==="+addmembers.length);
答案 4 :(得分:1)
根据您的代码,它肯定会给您这个错误,因为您正在初始化0大小的数组。
您可以使用ArrayList
或List<T>
代替此操作,然后您就可以为其添加动态值。
因此,使用这两个而不是数组是最好的。