アプリ版:「スタンプのみでお礼する」機能のリリースについて

JAVA初心者です。
VBでのRedim Preserve、CのreallocみたいなものはJAVAには無いのでしょうか?
要はあらかじめ配列数がわかっていない時に動的配列確保を行いたいのです。
Objectではなく、基本クラスのint、byte等の配列に使いたいと思っております。
ArrayListが近い事が出来そうだったのですが、Objectにしか使用出来ないので、
断念しました。教えてください。

A 回答 (3件)

ラップするというのは、こんな感じです。



byte value = 1;
ArrayList list = new ArrayList();
list.add(new Byte(value));

byte や int に対応する、java.lang.Byte や java.lang.Integer などのクラスを使います。例えば new Byte(3) とやると、3 の byte 値を持つ Byte クラスのオブジェクトができます。あくまでもオブジェクトですので、そのままでは足し算や掛け算はできませんが、ArrayList にオブジェクトとして追加できるようになります。

オブジェクトから元の数値に戻すには、byteValue() や intValue() などのメソッドが各クラスに用意されているのでそれを使います。

もちろん、質問者さんが補足に書いたように、文字列に変換して ArrayList にいれる方法でもかまいません。ただし、Byte や Integer クラスのオブジェクトを使うと、
○「文字列⇔数値」の相互変換の必要が無いので、(一応)速い。
○元の数値が byte だったのか、int だったのか、short だったのか、…… が判別できる。
などの利点があります。
    • good
    • 0
この回答へのお礼

2度もご返答ありがとうございました。よくわかりました。

お礼日時:2003/04/12 22:28

配列の取り直しそのものはなかったと思いますが、


宣言はどこでも可能であり、
配列の要素数は変数で指定することができるので、

int[] a = int[10];
...
int n; //必要な要素数。aの長さより大。
int [] b = new int[n];
System.arraycopy(a, 0, b, 0, a.length);//元の配列の内容をコピー
a = b; //b配列をa変数に代入

てな風にすればいいのではないでしょうか。
コピーするのが無駄のようだけど、
reallocだって内部では、
別の配列を確保してコピーしている(場合もある)わけだし。
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2003/04/12 22:27

ArrayList の int 版や byte 版を自作するか、int や byte の値を Integer や Byte クラスのインスタンスでラップして ArrayList に入れるか、のどちらかでしょうね。

この回答への補足

たとえば、ラップするとは、
byte b = 1;
ArrayList a = new ArrayList();
a.add(String.valueOf(b));
こういう風にStringに変換すればいいという事でしょうか。これでうまくいきました。ありがとうございます。
ですが、言わんとした事はこれじゃないですか?
もし、違うのであれば、具体的に教えてください。

補足日時:2003/04/11 18:52
    • good
    • 0

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