[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00379] Re: JAVA での多次元動的配列の実現
MAMIと申します。えんどうさん、回答ありがとうございます。
yasuyuki さんは書きました:
>Cもそうですが、Java には多次元配列というものは存在しません。
>「配列要素が配列である1次元配列」で表現するしかありません。
むむーー、そうなのですか。
Redim Preserveができれば便利なのに、と思ったのですが。
>多次元配列の要素を拡張する目的は何でしょうか?
例えば、変なたとえですけど
JSPでDBから読み込んだ[プログラムID,プログラム名]というレコードを
あるだけ表示して1行毎にチェックボックスをくっつけるとします。
<html>
プログラムID プログラム名 チェックボックス
: 何行なるかはわからない
</html>
で、オペレータがチェックボックスをオンにしたレコードについてのみ
その後の処理のために
{{プログラムID,プログラム名},{プログラムID,プログラム名}....}
という配列に格納したいような場合、
String[][] myarray = new String[2][];
~~
とは後ろのエントリ数が決まらないために書けないし、
(→初めにチェックボックスがオンになっている数を数えて
String[][] myarray = new String[2][チェックボックスがオンになっている数];
とする発想は全然ありませんでした)
配列のデータを保持したままエントリ数を増やすことが
できないので
int j = 0;
for (int i=0; i<全部のレコード数; i++){
if (チェックボックスがオン){
j++;
String[][] myarray = new String[2][j];
myarray[0][j] = プログラムID(i)
:
}
}
とも書けないし、と悩んで結局[jfriends:00377]に書いたように
現在のところはHashtableを使っています。
>System.arraycopyメソッドでコピーするのが良いかもです。
ということは
String[][] myarray = new String[2][100];
というように最初は定義しておいて、エントリが足りなくなったら
もっと大きい配列にコピーしなさい、ということですよね。
>Cもそうですが、Java には多次元配列というものは存在しません。
>「配列要素が配列である1次元配列」で表現するしかありません。
Cは全然知らないし、私の頭がVBモードなせいかもしれませんが
動的配列使えないのはやっぱり不便です。
けど無い物は仕方ないですものね。
どうもありがとうございました。
----
written by Mami ASAI
Vine Linux 2.5
Apache1.3.26
Tomcat v3.3.1
JDK1.3.1_04
PostgreSQL 7.1.3