- 締切済み
ArrayListでの要素の取り出し
Javaについて質問です。 名前順にソートしたArrayListのある要素だけを取り出して、 DefaultListModelに追加していきたいのですが、 book = new AddressBook(); book.add(new Address(太郎,住所,電話番号,メールアドレス)) book.add(new Address(花子,住所,電話番号,メールアドレス)) この例で、1番目の要素の名前だけ取り出すにはどうすればいいのでしょうか。 model.clear(); book.shellSort(); for(int i = 0; i < book.size(); i++){ String[] field = (String)book.get(i).split(",");//←ここでエラーになります。 model.addElement(field[0]); } ObjectとStringの扱いが分からず立往生です… 回答お待ちしております。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- momenlara
- ベストアンサー率60% (6/10)
最近のJavaは知らないのですが、 Java1.5以降とそれ以前ではArrayListの仕様も違うみたいですね。 いずれにしても、AddressBookクラスとAddressクラスの実装が分からないので、 以下は若干の想像を含みます。 まず、ArrayListにAddressクラスのオブジェクトをaddしたならば、 getで得られるオブジェクトもAddressクラスのオブジェクトになると思います。 そしてAddressクラスから1番目の要素の名前だけ取り出すには、 そのためのメソッドがAddressに用意されている必要があります。 例えばこんな感じ。 (もしかしたらC++な文法になっているかも。コンパイルできるかは未確認です) class Address { public String name() { return myName; } private String myName; } 名前を取り出すname()メソッドを使って、 ループ処理をするとしたらこんな感じになるでしょうか。 (ここでは名前をコンソールに表示しています) for (int i=0; i<book.size(); i++) { Address addr = book.get(i); println(addr.name()); } もう少しオブジェクト指向について、べんきょうする必要があるかもしれません。 ある程度、時間はかかりますが、一度わかってしまえばいくらでも応用がききます。 あきらめずにがんばってくださいね。
おそらく Adress オブジェクトをString にキャストできそうにないです。 したがって book.get(i)でStringオブジェクトが返らない限りだめでしょう。コードを全部表示したらどうでしょう。
キャストのあたりかもしれません。 String[] field = ((String)book.get(i)).split(","); (Generics を使うとキャストしなくていいけど)
エラー名はなんでしょうか?
補足
AddressBookGUI.java:286: シンボルを見つけられません。 シンボル: メソッド split(java.lang.String) 場所 : Address の クラス String field = (String)book.get(i).split(","); ^ エラー 1 個 です。 調べながら作っていて、getメソッドで具体的に何を指すのかもわかっていません…
補足
AddressBook内のgetメソッドで値をtoString()で変換したら出来ました! ありがとうございました。