• ベストアンサー

配列を扱うのが面倒(要素数とか考えるのが)で、ついArrayListや

配列を扱うのが面倒(要素数とか考えるのが)で、ついArrayListやHashMapを多用してしまうのですが、何かまずいことがあるでしょうか?重かったりするのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nobuoka
  • ベストアンサー率69% (23/33)
回答No.1

> 重かったりするのでしょうか? そうですね、固定長のメモリ領域を使用する配列と比べると、ArrayList や HashMap は要素数の増加に応じてメモリを割り当てる必要があるため処理が遅くなったり、メモリ使用量そのものも配列と比べて大きかったりというデメリットはあります。 そのため、配列を使用できるような状況でしたら配列を使用した方がいいと思います。 ただ、ArrayList や HashMap を使ったからといって配列を使用する場合と比べて格段に処理が遅くなったりメモリ使用量が大きくなったりするということはないと思います (自分で計測したことはないので詳しくはわかりませんが) ので、なんでもかんでも配列を使うべきというわけでもなくて、必要に応じて ArrayList や HashMap、配列を使い分けるといいと思います。 (例えば要素数があらかじめわからない場合などは ArrayList を使えばいいわけですし)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • suzukiyo
  • ベストアンサー率26% (11/42)
回答No.3

ArrayListやHashMapはスレッドセーフでないので、スレッドを使用した場合に問題が発生します。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

厳密に言えば配列の方が速いのですが、人間が気にする程の 差はありません。特定のメソッドで配列しか受け入れない ものもあるので、ArryList⇔配列の変換方法さえ知って いれば問題ありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ArrayListの要素数の上限

    java で ArrayListの要素数の上限はいくつでしょうか? ネットで検索したところ C# の ArrayList は 2^32 - 1 のようですけど・・・。 たて、よこ 2^64 の巨大な実数値行列があって、これの固有値を求めるプログラムを作ることになっています。 最初は double の2次元配列で行列を作ろうと思ったのですが、double配列の要素数は 2^32-1 個が限界であきらめました。別の方法を探しているところなのです。 パソコンのメモリは24GBにしてOSも64bit Windowsにしたので java が対応できれば大丈夫かと思うのですが・・・ よろしくお願いします。

    • ベストアンサー
    • Java
  • 配列の要素数

    配列の要素数を求めるプログラムを作りたいのですが

  • 配列の要素数について

    下記の記述の場合、配列の要素数っていくつになりますか? Dim strArray() As String ReDim strArray(0) また下記のように、配列の要素数を具体的に書かずに使った場合不具合はでますか? Dim strArray() As String strArray(0) = "aa" strArray(1) = "bb"

  • 配列の要素数を調べる方法

    配列の中にいくつ要素があるか後から調べる方法はあるでしょうか? int test[4][3] = {   {0,1,2},   {0,1,2},   {0,1,2},   {0,1,2}, } ; 上のケースだと、X方向に3、Y方向に4つの 要素があります。しかし、これだとあらかじめいくつ要素があるかを決めて 置かないといけません。 例えば、 int test[] = {0,1,2,3....} みたいに宣言された場合や、 char *test[] = {   "ああああああ",   "いいいいいい",   "うううううう",      ・      ・ //(これは文字列の数を要素数とします) } ; のように宣言された二次元配列などで、後から配列内にいくつ要素があるかを 調べることなどは可能でしょうか?

  • 配列の要素数に変数を入れたいときには

    よろしくお願いします。 配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。 具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。 ご教授ください。

  • ArrayListに配列を入れることは出来ますか?

    最近javaの勉強を始めました。 それで質問なのですが、ArrayListにString型の配列を入れれないでしょうか? また、Genericsはどうなるのでしょうか(取り出すときにキャストする方法でも)? よろしくお願いします。

    • ベストアンサー
    • Java
  • ArrayListの質問。

    ロジックの質問なのですが、、 ValueObjectクラス  private boolean flg = false;  private String strYMD; それぞれgetter/setter あらかじめ、aValの方にsetterで、20040626とセットします。 このオブジェクトをArrayListへaddしていきます。 ここで、String[] strYMDArray ={"20040623","20040626","20040622"}; という配列があります。 このとき、ArrayListの中身の要素数でループさせて、 配列strYMDArrayの日付と、ArrayList内のValueObjectの日付を比較し、同じであれば、 ValueObjectのflgをセットし、再度、ArrayListへつめなおしてやらなければなりません。 しかし、うまい方法を思い浮かべることができません。 どうか、うまい方法をおしえてくださいませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • ArrayList型の配列のジェネリックをつけたい

    ArrayList型の配列にジェネリックをつけたいです。 下記の状態だと、Eclipseで「!」マークがでてしまいます。 ArrayList<Double>[] x = new ArrayList[10]; 右辺にジェネリックが必要だと思うのですが、どう書き直せば 良いでしょうか??

    • ベストアンサー
    • Java
  • 二次元配列における要素数のはじき出し

    普通、配列の要素数を出すとき $num = @list; で良いですよね? ですが、二次元配列で、 $num = @list[1]; って形にするとエラーになります。 どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • 参照配列の要素数の求め方は?

    リファレンス配列の要素数は、$#では求められないのでしょうか? ------------------------------------- foreach $i(0 .. 3){ $hash->[$i] = $i * 100; } print "\%hashの要素数->$#hash\n"; $ref = \%hash; print "\%{$ref}の要素数->$#{$ref}\n"; -------------------------------------

    • ベストアンサー
    • Perl
カラー印刷できない
このQ&Aのポイント
  • Windows11でのカラー印刷ができなくなった
  • 製品名:MFC-J903N、環境:Windows11、接続方法:無線LAN、電話回線:ひかり回線
  • 問題:Windows11にアップデートした後、MFC-J903Nを使用しているがカラー印刷ができなくなった。接続は無線LAN、電話回線はひかり回線である。
回答を見る