みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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の扱いが分からず立往生です…
回答お待ちしております。

投稿日時 - 2009-01-13 15:17:04

QNo.4627081

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

最近の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());
}

もう少しオブジェクト指向について、べんきょうする必要があるかもしれません。
ある程度、時間はかかりますが、一度わかってしまえばいくらでも応用がききます。
あきらめずにがんばってくださいね。

参考URL:http://www.javadrive.jp/start/arraylist/

投稿日時 - 2009-01-13 16:33:40

おそらく
Adress オブジェクトをString にキャストできそうにないです。
したがって book.get(i)でStringオブジェクトが返らない限りだめでしょう。コードを全部表示したらどうでしょう。

投稿日時 - 2009-01-13 16:15:50

補足

AddressBook内のgetメソッドで値をtoString()で変換したら出来ました!
ありがとうございました。

投稿日時 - 2009-01-13 16:40:47

キャストのあたりかもしれません。
String[] field = ((String)book.get(i)).split(",");
(Generics を使うとキャストしなくていいけど)

投稿日時 - 2009-01-13 16:07:58

エラー名はなんでしょうか?

投稿日時 - 2009-01-13 15:20:40

補足

AddressBookGUI.java:286: シンボルを見つけられません。
シンボル: メソッド split(java.lang.String)
場所 : Address の クラス
String field = (String)book.get(i).split(",");
^
エラー 1 個

です。
調べながら作っていて、getメソッドで具体的に何を指すのかもわかっていません…

投稿日時 - 2009-01-13 15:30:38

あなたにオススメの質問