牛、豚、鶏、どれか一つ食べられなくなるとしたら?

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

A 回答 (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/
    • good
    • 1

おそらく


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

この回答への補足

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

補足日時:2009/01/13 16:40
    • good
    • 0

キャストのあたりかもしれません。


String[] field = ((String)book.get(i)).split(",");
(Generics を使うとキャストしなくていいけど)
    • good
    • 0

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

この回答への補足

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

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

補足日時:2009/01/13 15:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!