お世話になります。

GUIから3つのString文字列を受け取り、追加ボタンを押した時点でVector(List)に格納し、登録ボタンを押してはじめてDBにデータを格納させたいのですが、

Vector list = new Vector();
String addData[] = {txta.getText(), txtb.getText(), txtc.getText()};
for(int i=0; i<addData.length; i++){
list.addElement(addData[i]);
}

しかし、連続してデータを追加するとlistには
{data1,data2,data3,data4,data5,data6}
のように入ってしまいます。
これを
{data1,data2,data3}
{data4,data5,data6}
のようにlistに格納するにはどうすればいいでしょうか?

ご教授頂ければ幸いです。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。


「String配列の要素を順番に格納している」ことを単に2回、3回と繰り返しているだけですので、結果としてStringが要素のVectorになるのです。
Vectorに格納するときにわざわざ要素ごとにばらさず、String配列をそのままいれれば、題意を満たすはずです。
Vectorから取得する際には、いまはおそらくStringにキャストしているでしょうが、String[]にキャストすれば再びString配列として利用できます。
    • good
    • 0
この回答へのお礼

解決いたしました!!

ありがとうございました~!

お礼日時:2003/10/09 14:59

 3×2の二次元のデータ構造に格納したいのですね。



 でも、元のデータは3個のString。ここからどのようにして6個のStringが出てくるのでしょうか。

 逆に言うと、{data1,data2,data3}と{data4,data5,data6}の区切りはどこでしょうか。

 また、Vectorはその名のとおり、一次元のデータ構造です。二次元にするにはVectorを配列にする(Vector[])か、またはVectorを使わずにStringの二次元配列(String[][])にします。

この回答への補足

どうもありがとうございます。

3つのStringは{住所 氏名 年齢}で、
一度追加ボタンを押して、連続して追加をした場合、
現状では{埼玉,菊川,25,神奈川,小泉,61}なります。

補足日時:2003/10/09 00:29
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVectorクラスの使い方

いつもお世話になっております。
Vector vector = new Vector();
String array[] = new String[11];
vector.addElement(array)

for( int i = 0; i1 < vector.size(); i++)
{
String str = (String)vector.get(i);System.out.println(str);

11の配列にデータ(String)を入力し(ここでは省略)、11すべてをVectorへいれ、String型で取り出したいのですがエラーになります。
System.out.println(vector1.get(i));だと文字化けします。
アドバイスお願いします。そういったことを書いてあるサイト等ご存知でしたらお願いします。

Aベストアンサー

>11の配列にデータ(String)を入力し(ここでは省略)、11すべてをVectorへいれ、String型で取り出したいのですがエラーになります。

>しかしながらどうしてもうまくいきません・・

>試していますがうまくいきません。

>勉強になりました。しかしながらまだうまくいきません。


エラーが出るのなら、エラーの内容を書きましょう。
「うまくいきません。」と書かれても、それを見たって何がどううまくいかないのか分かりません。

それにもしかしたら質問者さんが
「うまくいかない。」
と思っているだけで、javaとしては正しい動きをしているかもしれません。

質問の仕方として、
・どうしたい。
・実行した内容。可能ならばソースをつける。
・実行結果。エラーが出るならエラーの内容を全てつける。
・自分で試したことがあるのならその内容と結果。
・自分の環境(OS、javaのバージョン、ミドルのバージョンなど)

#個人的には
#「お礼」で「ありがとうございました。できました。」
#と書くよりは解決した内容をまとめて書いて
#同じように悩んでいる人の助けになるようにするのがいいと思う。


では本題。
>11の配列にデータ(String)を入力し(ここでは省略)、
>11すべてをVectorへいれ、String型で取り出したい
ということなので、きっと
vecotr.get(1);
とすると
array[1]
の文字列が取得したいんですよね?

以下上記仮定より
配列arrayの全要素をvectorにセットするには
for(int i = 0;i < array.length;i++){
  vector.add(array[i]);
}
とします。
逆に文字列をvectorから取り出して表示するには
for(int i = 0;i < vector.size();i++){
  System.out.println(""+i+"番目の要素:["+(String)vector.get(i)+"]");
}
とします。

で、JAVAのAPIは読みましたか?
読んでいただくと分かると思いますが、
Vectorクラスのget(int i)メソッドで返ってくるのは
Object
です。
ですので文字列として扱いたいのならStringにキャストしてあげないといけません。
(いや、暗黙的にtoString()が呼ばれるか?あっ、でも配列オブジェクトとして突っ込んでるから、文字化けに見えるのか。)

これまたAPIを読んでいただくとわかるのですが、
VectorクラスのaddElement(Object obj)メソッド

指定の要素を最後に追加し…
なので、引数のobjは「1つの要素」として扱われます。
addElementの引数にarrayを指定すると、Vectorの最後番目に「配列まるごと」を入れていることになります。
ですので取り出すときには#3さん、#2さんの仰るようにString配列にキャストしてあげないといけません。

以上長々と失礼しました。

>11の配列にデータ(String)を入力し(ここでは省略)、11すべてをVectorへいれ、String型で取り出したいのですがエラーになります。

>しかしながらどうしてもうまくいきません・・

>試していますがうまくいきません。

>勉強になりました。しかしながらまだうまくいきません。


エラーが出るのなら、エラーの内容を書きましょう。
「うまくいきません。」と書かれても、それを見たって何がどううまくいかないのか分かりません。

それにもしかしたら質問者さんが
「うまくいかない。」
と思ってい...続きを読む

QVectorとArrayListの違い

お世話になっています。

VectorとArrayListやHashTableとHashMapなど、同期型と非同期型のクラスなどありますよね。

これらは具体的にどのようなときに使い分ければ良いのでしょうか?
私の考えでは、どの場面でもArrayListやHashMapを使っても問題ないと思ってしまいます。

マルチスレッドでスレッドが生成される前に生成されたListオブジェクトを参照した場合には予想と異なる動きをしそうですが、それ以外では全く問題ないように思います。

どの様に使い分ければよいのでしょうか?

Aベストアンサー

同期を取るべき時というのは、複数スレッドが
同時にそのListにアクセスする可能性があるときです。

下のコードは本来 ArrayList を使うべきではありません。
実行すると、リスト内でインデックスなどの整合性
が破壊され add メソッドが例外をスローします。


// 製品クラス
static class Product() {
}

public static void main(String[] args) {

 // 製品を保管する倉庫
 final List wareHouse = new ArrayList();

 for (int i=0; i<10; i++) {

  // 製品を作って倉庫に保管するスレッド
  new Thread() {
   public void run() {
    while (true) {
     wareHouse.add(new Product());
    }
   }
  }.start();

 }

}


new ArrayList()

Collections.synchronizedList(new ArrayList())

と変更すればエラーはでなくなります。
Vector でもいいですが。

同期を取るべき時というのは、複数スレッドが
同時にそのListにアクセスする可能性があるときです。

下のコードは本来 ArrayList を使うべきではありません。
実行すると、リスト内でインデックスなどの整合性
が破壊され add メソッドが例外をスローします。


// 製品クラス
static class Product() {
}

public static void main(String[] args) {

 // 製品を保管する倉庫
 final List wareHouse = new ArrayList();

 for (int i=0; i<10; i++) {

  // 製品を作って倉庫に保管する...続きを読む


人気Q&Aランキング

おすすめ情報