私は一般的にJavaとプログラミングに取り掛かりつつあります。カスタムクラスのArrayListと異なる時間に変数を設定する
私はクラスの犬を持っている:
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かそこらの犬の合計を持っていると思います。この目的のために、私は "名前"と "URL"変数のみを含んでいましたが、実際には各オブジェクトに対して約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);
}
これは正常に動作します。
for (int i = 0; i<dogInfo.size(); i++){
Log.i("DogURL", dogInfo.get(i).getURL());
}
私は個々のURLを取得できますが、次に名前を追加しようとすると問題が発生します。私の思考プロセスは、オブジェクトがすでにArrayListに追加されているということですので、私はだけではなく、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());
}
私が間違っていることを教えてもらえますか?また、これはこのようなデータを処理するための最良の方法ですか?私はかなり新しいので、もし私がこれをやっているやり方が最適でないなら、私がそれ以上前に私に知らせてください。
** dogNamesElement **とは何ですか? –
申し訳ありませんが、不要なコードを入れすぎて関連情報を表示したくありませんでした。 ** dogNamesElement **と** dogURLs **はjsoupライブラリから解析されたHTMLページの両方の要素です。私は彼らが両方とも正しい文字列を出力することを確認しましたが、setName()forループを使用していると、インデックスごとに1つずつ、ArrayListの各インデックスに名前のリスト全体が与えられているようです。 – Hasansidd
あなたが必要とするのは、dogNamesElementオブジェクトのコレクションを反復し、カウンタ変数を保持し、カウンタが表すインデックスで1つのDogインスタンスを更新し、インクリメントしてから次のdogNamesElementに移動することです。あなたがあなたのコレクションのdogNameElementsかDogオブジェクトから出るまで繰り返すが、dogNamesElementに何が入っているのかわからないと言うと難しい。あなたは、その中に独特の犬の名前を持つ多くの人がいるかもしれません。あるいは、それはすべてのものが区切られたテキストの中にあるかもしれません。 –