
お世話になっています。
今うまくいかずに困っていることがありまして、
ご存知の方がいらっしゃいましたら、
ご回答いただけないでしょうか?
質問の内容は以下の通りです。
ArrayListにセットされているデータを
Bean配列にセットするにはどのようにしたら
よいのでしょうか?
自分では以下のようにしているのですが、
デバッグすると落ちてしまいます。
// Bean配列の生成
Bean[] bean = new Bean[arrayListList.size()];
// Iteratorにより要素を取得する
Iterator it = dataList.iterator();
// ヘッダー情報Bean配列の行番号
int i = 0;
// ArrayListのi行目のデータをBeanにキャストし、
// i行目のBean配列にセットする
while(it.hasNext()){
bean[i] = (Bean) dataList.get(i);
i++;
}
ちなみに、キャストしようとしているBeanには
int型の項目があるんですが、そういうのが原因で
落ちるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ください。
No.1ベストアンサー
- 回答日時:
こんにちは。
「落ちます」の表現は、他人にはわかりません。
例外が発生しているのであれば、その例外を特定して、情報として掲載してください。
Bean[] bean = new Bean[arrayListList.size()];
と、配列生成時は、arrayListListを利用し、そのあとは、dataListを利用しているのが、すごく気になります。これが原因ではないでしょうか?
それとも、dataListの要素として設定されている値が、Beanクラスオブジェクトではないのが原因だったりしませんでしょうか?
いずれにしても、どう「落ちている」のか、精確に書いていただかないと、、、です。
これは、直接的な話ではありませんが、コーディングに無駄を感じます。
while文でループする度に1増加する変数iを利用しているのならば、Iteratorを使わずに、
for (int i=0; i < dataList.size(); i++) {
bean[i] = (Bean) dataList.get(i);
}
とした方が、コーディング量が減ります。
また、Listから配列へはtoArrayメソッドを使うともっとコーディング量が減ります。
Bean[] bean = new Bean[dataList.size()];
dataList.toArray(bean);
と言った感じでどうでしょう。
この回答への補足
早速のご回答ありがとうございます。
>「落ちます」の表現は、他人にはわかりません。
>例外が発生しているのであれば、その例外を特定し
>て、情報として掲載してください。
すみません。確かにおっしゃる通りですね。今後、
気をつけます。
>Bean[] bean = new Bean[arrayListList.size()];
>と、配列生成時は、arrayListListを利用し、そのあと>は、dataListを利用しているのが、すごく気になりま
>す。これが原因ではないでしょうか?
度々すみません。誤植です。arrayListListと
dataListは同じものとみなしてください。
>いずれにしても、どう「落ちている」のか、精確に
>書いていただかないと、、、です。
そうですね。失礼しました。実際のところは、
デバッグ中にExceptionが発生してしまいます。
どのExceptionかは忘れてしまい、しかも今は
確認できませんので、情報として掲載できません。
ごめんなさい。
>それとも、dataListの要素として設定されている値
>が、Beanクラスオブジェクトではないのが原因だった
>りしませんでしょうか?
う~ん、どういうことですか?知識が全然足りない
もので、おっしゃっていることが理解できないのです
けれど、dataListにセットしている値を、Beanに
セットするときに、Beanの項目にint型やdouble型の
ものがあるとダメということですか?よろしかったら
ご教授いただけませんでしょうか?
ソースについてもいろいろと適切なアドバイスを
頂まして、ホントにありがとうございます。
No.2
- 回答日時:
こんにちは。
while(it.hasNext()){
bean[i] = (Bean) dataList.get(i);
i++;
}
ここのwhile文ですが、無限ループになってしまっていますよ。
Iteratorを使うのでしたら、ちゃんとnext()メソッドで要素を取得しないと、hasNext()はいつまでたってもtrueを返します。
出た例外もIndexOutOfBoundsExceptionだったはずです。
Iteratorを使うのでしたら、こう↓
while (it.hasNext()) {
bean[i] = (Bean)it.next();
}
使わないのであれば、#1さんの言うとおり、
for (int i=0; i < dataList.size(); i++) {
bean[i] = (Bean) dataList.get(i);
}
こうすべきです。
ご回答ありがとうございます。
言われてみれば、確かに無限ループになりますね。
全くもって気づきませんでした。
いろいろとご指導いただきありがとうございました。
これで解決できそうです。ホントに心から感謝
いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
servletからjspへオブジェクトの配列情報を送る方法
Java
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
ラジオボタンの選択肢をサーブレットで取得するには?
Java
-
-
4
JavaBeansの配列の値取得方法について
Java
-
5
ExcelVBAからAccessMDB内のテーブル存在チェックをしたい
Visual Basic(VBA)
-
6
<forEach> 内で供給された items" を反復処理する方法が不明です"
Java
-
7
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
8
チェックボックスの有無判定
JavaScript
-
9
Javascriptの値をJava(JSP)へ渡す方法
Java
-
10
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jspでの二次元配列
-
サーブレットで複数値の受取り
-
JSPのcharAt()について
-
配列で、値の入っている要素数...
-
System.err. printlnとSystem.o...
-
InputStream.read()でタイムア...
-
VBSエラー"オブジェクト型の変...
-
変数を動的に作るには?
-
javaのコンパイルエラーについ...
-
パソコンキーボードで時分秒を...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
「配列定数は、イニシャライザ...
-
javaです
-
JButton-背景の透明化
-
VBで作った乱数を一度も重複さ...
-
C#で、あるクラスのメンバーす...
-
int型のゼロ埋め
-
createImage()を使い コンパイル
-
プログラミングの問題です。大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
Javaで文字と数字が混ざったも...
-
この警告はどうすれば?
-
配列の中に複数存在する数がい...
-
【C#】ハッシュテーブル(連想...
-
ページング
-
C#の質問
-
n番目に大きな値を探索する
-
javaでデータベース(mysql)か...
-
C#で動的配列Listの中身をListB...
-
C言語でunsigned char配列を連...
-
同じ配列またはクラスを、2回...
-
Javaで文字を漢字であるか否か...
-
ArrayListからBean配列に値をセ...
-
Java配列の問題を教えてくださ...
-
ランダムでのboolean値の与え方
-
配列で、値の入っている要素数...
-
strutsで2次元配列をやりとりす...
-
java StringとString[]の違い
-
javaでEUC-JP文字列→UTF-8への変換
おすすめ情報