- PR -

ArrayListからプリミティブ型の配列への変換について

投稿者投稿内容
raimblue
会議室デビュー日: 2004/11/10
投稿数: 11
投稿日時: 2004-11-10 19:06
初めまして。
raimblueと申します。

件名のように、ArrayListからプリミティブ型(ここではint)への
変換を行いたく、以下のようなコードを書いてみました。

int[] tmp = (int[])arraylist.toArray(int);

しかし、上記のコードではコンパイルできません。

どうすればいいのだろうか、と探していると、以下のような記事を拝見しました。
http://www.atmarkit.co.jp/fjava/javatips/080java009.html
上記の記事には
String[] a = (String[])l.toArray(new String[0]);
とのようにあったのですが、これはクラスでありプリミティブ型の事は書かれていませんでした。

そこで質問なのですが、ArrayListをプリミティブ型の配列int[]やlong[]に一括入替
するのはどのようにすればいいのでしょうか?

#Integerクラス、Longクラスを使用すればいいじゃないかって意見はあるかと思いますが、
#クラスでなく、プリミティブ型ではどのようにすればいいのか知りたいです。

以上、ご教授いただけますよう、よろしくお願いします。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-11-10 19:12
プリミティブ型って Object じゃないですからね。
Collection.toArray(Object[]) では無理でしょう。
raimblue
会議室デビュー日: 2004/11/10
投稿数: 11
投稿日時: 2004-11-10 19:25
早速のお返事ありがとうございます。

確かに仰る通りですね(^^;

冷静に考えると、
そもそも add(int) のメソッドが無いので登録も無理ですね(^^;;;

ArrayListのようなListを使用する場合はint[]でなくInteger[]を使用するのが
一般的なのでしょうか?

複数のintの値を最終的にはint配列にセットしたいのですが、、、
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-11-10 19:36
引用:

ArrayListのようなListを使用する場合はint[]でなくInteger[]を使用するのが
一般的なのでしょうか?

複数のintの値を最終的にはint配列にセットしたいのですが、、、



格納するエレメントの数が決まっているなら配列で良いと思いますよ。
実際のシチュエーションがわからないとなんとも・・・。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-11-10 20:58
どうしてもint[]でなければならない理由があるのでしょうか?

現状では
int[] dst = new int[list.size()];
(Iterator iter = list.iterator();iter.hasNext();){
dst[i] = ((Integer)iter.next()).intValue();
}
とべたに書くしかないと思いますよ。

#もしかして、JDK1.5のList Arrays#asList(T[])やT[] Collection#toArray(T[])
#ってautoboxing対応してるかな?それを使うというのも…


[ メッセージ編集済み 編集者: シュン 編集日時 2004-11-10 21:22 ]
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-11-10 22:10
Commons Primitivesを使ったらどうでしょうか。
http://jakarta.apache.org/commons/primitives/
intやlong用のArrayListが用意されています。
teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2004-11-10 23:53
JDK1.5のAutoboxingはどうですか?

というのはおいといて、
大抵は、ArrayListなりを継承した
クラスを作成してintやlongを扱うオペレータを
追加する方法が一般的でしょう。

いや、配列は配列のままあつかいます。普通は。

個人的に、プリミティブ型の配列をbyte配列を除いて
あまりつかうケースはないというのもあります。
raimblue
会議室デビュー日: 2004/11/10
投稿数: 11
投稿日時: 2004-11-11 17:57
返事が遅くなってすいません。
raimblueです。

いろいろなアドバイスありがとうございます>皆様

絶対にint[]を使用しなければいけない状態ではなく、
個人的に「こんなとき、どうやってやるんだろう?」と疑問に思ったもので
質問させていただきました。

けっこういろいろな方法があるのですね。
ためになります(*_*)

> 個人的に、プリミティブ型の配列をbyte配列を除いて
> あまりつかうケースはないというのもあります。

グサッ!! そ、そうなんですか??(^^;;;;;
私普段けっこうint[]を使ってたのですが、、、
修行しなおします(^^;

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

スキルアップ/キャリアアップ(JOB@IT)