- ベストアンサー
配列を自由に増やすには
swingでGUIを作成しています。ドラッグされた文字を配列に加えるプログラムは作ることが出来たのですがその配列の数、要素数も未定です。ユーザーがどれだけドラッグするか不明な為。 a[5],b[6],c[6]の3つの配列の場合もあればa[4],b[4],c[7],d[3]4つの配列の場合もあります。 始めの段階で定義せずにその時々で作成していくというのはできないのでしょうか? よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
makevectorクラスを作る理由がよくわかりませんが,それは置いといて。 こんなふうにしてはいかがでしょう。 ------------------------------------- 1)makevectorクラスをVectorクラスの派生クラスにしてしまう。 class makevector extends Vector { public makevector() { super(); } // サンプル:文字の配列をmakevectorのVectorに取り込む // 注)動作確認してません public addStrings ( String[] input) { this.setSize(this.size() + input.length); for (int i = 0; i < input.length; i++) { this.add(input[i]); } this.trimToSize(); } } 2)testクラスのxには,makevectorクラスのインスタンスを入れるようにする。 public Vector x = new Vector(); public test(){ x.addElement(new makevector()); } ------------------------------------- 以上より, Vectorを後から追加したい?いくらでもどうぞ(メモリが続く限り) public test(){ x.addElement(new makevector()); x.addElement(new makevector()); x.addElement(new makevector()); } xの0番目に入っているvectorの~番目?じゃあ3番目を取り出してみますか makevector line0 = (makevector)x.get(0); String s = (String)line0.get(3); ちなみにこれを1行ですませたいなら String s = (String)((makevector)x.get(0)).get(3); こんな感じ?
その他の回答 (5)
- Tacosan
- ベストアンサー率23% (3656/15482)
いまどきならジェネリックを使ってあげた方が親切だと思う>#5.
- oscalymnk
- ベストアンサー率71% (5/7)
他の方が言われていた「VectorのVector」というのは,「配列にVectorを入れる」ではなく「VectorにVectorを入れる」です。 ちなみにVectorから配列に変換するには,VectorのメソッドtoArray()を呼び出します。 配列を扱うクラスとしては,Vector以外にも「ArrayList」や「LinkedList」もあります。また文字データを操作するなら「StringBuffer」もありますので検討してみてください。 ArrayListとLinkedListについては参考URLを参照
お礼
解答ありがとうございます。 一度作ってみました。 作ろうと思っているプログラムの都合上クラスを作ったりしています。 makevectorでvector型のxにvector型のvecを追加します。(voidで宣言の方が良いですか?そうすると参照するにどうするか検討付かないですけど。) これがvectorのvectorということでよいのでしょうか?必要になればその都度makevectorを呼び追加していくのでしょうか。 しかし今度makevectorで作ったvectorに値を入れる時どうすればよいのかわかりません。変数はnewvecでインスタンス化します。その後問題なく代入できます。 ただ考えているプログラムは何個そのあとvectorが追加されるかわかりません。例えばクリックされたらvectorを追加し代入するかもしれません。 そうなると毎回宣言するわけにはいかないです。 一応追加だけならクリックするたびにnewvecで追加していけばxには追加されます。そうなると参照する時どのようにするのかわからないです。 xの0番目の要素や1番目の要素自体は取り出せますが、xの0番目に入っているvectorの~番目というような取り出し方がわからないです。 よろしくお願いします。 import java.util.Vector; public class test { public Vector x = new Vector(); public test(){ makevector newvec = new makevector(); } class makevector{ public makevector() { Vector vec = new Vector(); x.add(vec); } } public static void main(String[] args) { new test(); } }
- Tacosan
- ベストアンサー率23% (3656/15482)
順序の入れ替えや要素の削除はもちろん Vector でもできます. ただし, それにどのくらいの時間がかかるかは別の問題です. C++ だと実行時間の規定もあるんだけど, Java の Collection にあるかどうかは知りません.
お礼
解答ありがとうございます。作ってみたところ確かめることが出来ました。
- MrBan
- ベストアンサー率53% (331/615)
VectorのVectorでは?
お礼
ありがとうございます。 つまり各要素にvectorをいれることで縦横に繋げるということでしょうか? 後々順番の入れ替え、削除をするつもりなのですがvectorでも大丈夫なのでしょうか?
- dyna_1550
- ベストアンサー率34% (122/353)
それがVectorでは?
お礼
解答ありがとうございます。要素数はそれで解決できますね。 ですが配列の数自体はどうすればよいのでしょうか?
お礼
何度もありがとうございます。 うまく参照もできるようになりました。