动态地向数组添加值

时间:2013-02-20 06:56:24

标签: java android arrays

我想在运行时向数组添加数据,但是我得到一个超出绑定异常的索引。

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);
}

5 个答案:

答案 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大小的数组。

您可以使用ArrayListList<T>代替此操作,然后您就可以为其添加动态值。
因此,使用这两个而不是数组是最好的。