- - PR -
ArrayListからプリミティブ型の配列への変換について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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クラスを使用すればいいじゃないかって意見はあるかと思いますが、 #クラスでなく、プリミティブ型ではどのようにすればいいのか知りたいです。 以上、ご教授いただけますよう、よろしくお願いします。 | ||||
|
投稿日時: 2004-11-10 19:12
プリミティブ型って Object じゃないですからね。
Collection.toArray(Object[]) では無理でしょう。 | ||||
|
投稿日時: 2004-11-10 19:25
早速のお返事ありがとうございます。
確かに仰る通りですね(^^; 冷静に考えると、 そもそも add(int) のメソッドが無いので登録も無理ですね(^^;;; ArrayListのようなListを使用する場合はint[]でなくInteger[]を使用するのが 一般的なのでしょうか? 複数のintの値を最終的にはint配列にセットしたいのですが、、、 | ||||
|
投稿日時: 2004-11-10 19:36
格納するエレメントの数が決まっているなら配列で良いと思いますよ。 実際のシチュエーションがわからないとなんとも・・・。 | ||||
|
投稿日時: 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 ] | ||||
|
投稿日時: 2004-11-10 22:10
Commons Primitivesを使ったらどうでしょうか。
http://jakarta.apache.org/commons/primitives/ intやlong用のArrayListが用意されています。 | ||||
|
投稿日時: 2004-11-10 23:53
JDK1.5のAutoboxingはどうですか?
というのはおいといて、 大抵は、ArrayListなりを継承した クラスを作成してintやlongを扱うオペレータを 追加する方法が一般的でしょう。 いや、配列は配列のままあつかいます。普通は。 個人的に、プリミティブ型の配列をbyte配列を除いて あまりつかうケースはないというのもあります。 | ||||
|
投稿日時: 2004-11-11 17:57
返事が遅くなってすいません。
raimblueです。 いろいろなアドバイスありがとうございます>皆様 絶対にint[]を使用しなければいけない状態ではなく、 個人的に「こんなとき、どうやってやるんだろう?」と疑問に思ったもので 質問させていただきました。 けっこういろいろな方法があるのですね。 ためになります(*_*) > 個人的に、プリミティブ型の配列をbyte配列を除いて > あまりつかうケースはないというのもあります。 グサッ!! そ、そうなんですか??(^^;;;;; 私普段けっこうint[]を使ってたのですが、、、 修行しなおします(^^; 皆さんありがとうございました。 |