使用自定义类的ArrayList并在不同时间设置变量

时间:2017-08-22 20:21:19

标签: java android arraylist

我刚刚进入Java和编程。

我有班级狗:

public class Dog {
    String name;
    String URL;

    public Dog(){
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getURL() {
        return URL;
    }

    public void setURL(String URL) {
        this.URL = URL;
    }
}

我想要总共300只狗。为此,我只包括&#34;名称&#34;和&#34; URL&#34;变量,虽然实际上,每个对象我还有大约10个变量。我认为与他们合作的最佳方式是制作ArrayList<Dog>。所以我设置的第一件事就是URL,我在这里做的是:

static ArrayList<Dog> dogInfo = new ArrayList<>();
for (Element e : dogURLs) {
    Dog dog = new Dog();
    dog.setURL(e.attr("src").toString());
    dogInfo.add(dog);
}

这正常并且符合预期。我可以通过

获取每个URL
for (int i = 0; i<dogInfo.size(); i++){
     Log.i("DogURL", dogInfo.get(i).getURL());
}

但是当我尝试添加下一个名字时,我遇到了问题。我的思维过程是对象已经添加到ArrayList中,所以我只需要使用名称setter而不是向ArrayList添加新元素:

for (int i = 0; i < dogInfo.size(); i++) {
    dogInfo.get(i).setName(dogNamesElement.text());
}

但是在执行此操作并打印到日志时,似乎ArrayList中的每个元素都包含整个名称列表。

for (int i = 0; i<dogInfo.size(); i++){
     Log.i("DogNames", dogInfo.get(i).getName());
}

你能告诉我我做错了什么吗?另外,这是处理这样的数据的最佳方法吗?我很新,所以如果我这样做的方式不是最优的,请在进一步说明之前告诉我。

1 个答案:

答案 0 :(得分:0)

解决。我将它从增强的for循环更改为常规for循环,并忘记在dogNameElement上使用get(index)。

dogInfo.get(ⅰ).setName(dogNamesElement.get(ⅰ)的.text());

而不是

dogInfo.get(ⅰ).setName(dogNamesElement.text());