• ベストアンサー

Generic.List・ArrayList・配列の使い分け(VB2005)

Generic.List・ArrayList・配列は、どのように使い分ければよいでしょうか? 簡単な具体例(こういう場合はGeneric、こういう場合は配列など)を挙げて説明して頂けると助かります。 使い分ける必要がないとしたら、ArrayList・配列を使用している箇所はGeneric.Listに置き換えたほうがよいでしょうか? ご助言よろしくお願い致します。

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

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

まず、GenericのList(Of T) とArrayListの違いがわかれば、 自ずと使い道を決めることができるのではないでしょうか? ■GenericのList(Of T)の場合 ・ArrayListに比べて、Collection(要素)の取得が高速 ・Collection(要素)は、(Of T)で指定した型で値を取得できる  # 「T」というのは、型の名前です。  # 例:List(Of String) ■ArrayListの場合 ・これは、2005が出る以前(Genericが登場する前)の  .NETバージョンから存在するものです ・Collection(要素)は、すべてObject型である。  #そのため、文字列データや数値データをArrayListに   保存している場合は、キャスト(ToString(), CStr, CIntなど)が必要 ・GenericのList(Of T)に比べてレスポンスが落ちる 2005から作っているプログラムであれば、GenericのList(Of T)が 良いんでしょうけど、2003, 2002 と互換性を取る必要があれば ArrayListを使うべきかと思います。 # アセンブリレベルの詳細で話すと違いはもっとありますが、   概要的な違いはこんなところです。 ご参考になれば幸いです。

tekan
質問者

お礼

kero_mioさん 各機能の概要を付記していただき、とてもわかりやすいです。 Generic.Listがやはり高機能ですね。。 互換性を考慮しないプログラムの場合、配列・コレクションはこれで統一してみようかと検討中です。 ご回答ありがとうございました。

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

関連するQ&A

  • Generic.Listに1次元配列の配列を格納したい(VB2005)

    VB2005の質問です。 変数ghogeにString型の1次元配列の配列を格納したいと考えています。 ----------------------------------------------- 'a) Dim hoge()() As string = _       {New string() {"a1", "b1", "c1"}, _       New string() {"a2", "b2", "c2"}, _       New string() {"a3", "b3", "c3"}} Dim ghoge As New Generic.List(of )   'b) MessageBox.Show(ghoge(1)(1))      ' "b2"と表示したい ----------------------------------------------- 質問内容は、(a)を(b)の初期値として設定するにはどのようにすればよいか、ということです。 (b)がGeneric.ListでなくArrayListの場合だと、   Dim ghoge As New ArrayList(hoge) でhoge配列を格納できますが、Generic.Listの場合はどのような構文にすればよいでしょうか。 現在は、下記のような処理でghogeに値を格納しています。 ------------------------------------------------------------ Dim ghoge As New Generic.List(Of Generic.List(Of String)) Dim aryhoge1 As New Generic.List(Of String)(New String() {"a1", "b1", "c1"}) Dim aryhoge2 As New Generic.List(Of String)(New String() {"a2", "b2", "c2"}) gary_hoge.Add(ary_hoge1) gary_hoge.Add(ary_hoge2) MessageBox.Show(gary_hoge(1)(1))    ' "b2"と表示される ------------------------------------------------------------ どうぞよろしくお願い致します。

  • ArrayList で配列を扱う場合の記述方法について

    ArrayList で配列を扱う場合の記述方法について、 探しきれないのでご教授お願いします。 ArrayList list = new ArrayList(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } という箇所をArrayList<Date>listを使って書き直すのはどのようになるでしょうか。 ArrayList<Date>list= new ArrayList<Date>(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } とすると、 型 ArrayList<Date> のメソッド add(Date) は引数 (String) に適用できません。 というエラーになってしまいました。

    • ベストアンサー
    • Java
  • C# ArrayListを二次元配列のように使用したい。

    C#についての質問です。 現在、ArrayListを用いた情報管理リストのプログラムを作成しています。 そのプログラムにソートを行う機能と、検索機能をつけたいのですが、そこで質問です。 ArrayList内の要素を、「特定のフィールド(例えば氏名であったり、年齢であったりするのですが…)を基準として昇順または降順にソートする」という処理、またあるフィールドのみを基準に検索を行うという処理を行う際、ArrayListを二次元配列のように使用することが出来たら便利だな、と思ったのですが、そのようなことは可能でしょうか? いろいろと試したり、独自に調べてはみたのですが、いまいちわからず、質問させていただきました。 お分かりになられる方がいらっしゃいましたら、ご教授いただければと思います。 よろしくお願いいたします。

  • C#の配列リストを機械的に複数作りたいです。非常に初歩的な質問で恐縮な

    C#の配列リストを機械的に複数作りたいです。非常に初歩的な質問で恐縮なのですが、 C#で、配列リストを機械的に複数個作ることはできないでしょうか。 具体的には、myArrayListという配列リストを100個作るとして、 System.Collections.ArrayList myArrayList1 = new System.Collections.ArrayList(); System.Collections.ArrayList myArrayList2 = new System.Collections.ArrayList(); System.Collections.ArrayList myArrayList3 = new System.Collections.ArrayList(); System.Collections.ArrayList myArrayList4 = new System.Collections.ArrayList(); System.Collections.ArrayList myArrayList5 = new System.Collections.ArrayList(); ・・・ System.Collections.ArrayList myArrayList100 = new System.Collections.ArrayList(); をループなどを使うことによって書きたいのですが。 詳しい方がいらっしゃいましたら、アドバイス願います。 同じ内容の質問を先ほど投稿してしまったのですが、タイトルが不適切だったため 直させていただきました。すいませんでした。

  • ArrayListを使った多次元配列の比較方法

    JAVAでArrayListを使った多次元配列の要素を比較方法で困っています。 下記のコードで、アイテム、数量、金額をランダムに10個配列に追加しています。 private ArrayList<Item> list; public ArrayList<Item> getItems1() { return list; } public void setItems(ArrayList<Item> items) { getItems(); } public Inventory() { list = new ArrayList<Item>(); } public void getItems(){ for(int i =0; i<10; i++){ int theItemType = (int)(Math.random()*6+1); int theQut = (int)(Math.random()*20+1); int thePrice = (int)(Math.random()*40+101)/20; list.add(new Item(theItemType, theQut, thePrice)); } } public String getItemName() { if(itemType == 1){ return "シャツ"; } if(itemType == 2){ return "スカート"; } if(itemType == 3){ return "ズボン"; } if(itemType == 4){ return "ネクタイ"; } if(itemType == 5){ return "靴"; } if(itemType == 6){ return "靴下"; } return null; } public String toString() { return getItemName() + " , " + getQut() + " " + getPrice(); } 同じアイテム、金額の場合は、数量を合計して表示させたいです。例えば、配列の要素が下記のような場合、1つ目と2つ目の要素は同じアイテム、金額になるので、数量を20として表示させたいのですが、どのように比較していいのかわかりません。どなたか教えてください。よろしくお願いします。 靴下 , 4, 5 靴下 , 16, 5 ネクタイ , 3, 5 ネクタイ , 16, 6 ネクタイ , 2, 6 ズボン , 16, 6 ズボン , 15, 6 スカート , 3, 6 靴 , 17, 7 シャツ , 17, 7

    • ベストアンサー
    • Java
  • ArrayListなどのソート

     いつもお世話になっています。ArrayListなどをソートする際に、Comparatorインターフェースを実装したクラスを利用して、辞書順や数値順などでソートすることは出来ますよね。これを任意の単語の順番にソートするにはどのようにすればよいのでしょうか。つまり、下記例において、文字列順ではなくて、"ONE", "TWO", "THREE", "FOUR"の順番にソートしたいのです。 ArrayList list = new ArrayList(); list.add("THREE"); list.add("ONE"); list.add("FOR"); list.add("TWO");  やはりcompare()メソッド内で総当り的に比較するしかないのでしょうか。  開発環境はJDK1.4です。事情により返答が遅れてしまうかもしれませんが、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java
  • JAVA 配列を格納したArrayListのサイズ

    ArrayListにcsvファイルを格納する処理を作成しました。 読み込みはBufferedReaderで行単位で読み込ませ、 ArrayListの各要素には各行をカンマ区切りでわけた配列を 入れてあります。 ここで読み込むcsvファイルがデータなしの時にデータがないことを コメントする処理を入れたいのですが、ArrayListのサイズが0であるという 条件を思いつき、「length」や「size()」で条件文を作成したところ、 コンパイルされても処理が正常に走りませんでした。 条件にしている箇所があっているのか間違っているのか。 あっているならば、配列をしまってあるArrayListの要素数を 得る方法、間違っているならば、正しい条件を教えてください。 大変恐縮ですが、ご助言お願いいたします。 inName : 取り込みファイル名(argsで引っ張っています。) outName : はき出しファイル名(同上) ExceptionはIOとFileNotFoundをcatchしています。 try{ bf = new BufferedReader(new FileReader(inName)); outbf = new BufferedWriter(new FileWriter(outName)); String line; while((line = bf.readLine()) != null){ al.add(line.split(",",0)); /*for(int i=0 ; i < data.length ; i++){ al.add(data[i]); }*/ //行数0の処理を記述しようとしている箇所 } for(String[] out : al){ for(int i=0 ;i<out.length ; i++){ outbf.write(out[i]); outbf.newLine(); } } }

  • ArrayListによる計算表作成

    for文を使用し九九の計算結果を配列に格納し、その配列内の情報を表形式で表示してみる。※配列はArrayListを使用すること 上記の問題を解いています。 -------------------------------------------------------------- import java.util.ArrayList; public class m4_2 { public static void main(String args[]) { ArrayList list = new ArrayList(); String[]s = new String[9]; for(int i = 1; i<=s.length; i++){ for(int j =1; j<=s.length; j++){ list.add((i * j));     //ここがどのように記述するか?? } System.out.print(list.get(0)); System.out.print(list.get(1)); System.out.print(list.get(2)); System.out.print(list.get(3)); System.out.print(list.get(4)); System.out.print(list.get(5)); System.out.print(list.get(6)); System.out.print(list.get(7)); System.out.print(list.get(8)); System.out.print("\n"); } } } ---------------------------------------------------------- 実行結果イメージ 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 (以下省略) 私の書いたソースでは1の位しか計算してくれません。 今月から本格的にJavaを勉強し始めた初心者なので どうかよろしくお願いいたします。

    • ベストアンサー
    • Java
  • Listのマッチを判定する便利Util

    Javaで以下のような処理をスマートに実現する良い方法を教えて下さい。 ・Listに配列をaddして、そのListの配列に対して指定した値がいくつマッチするかを判定する。 具体例として、 1、配列を作成 String[] array1 = { "aaa", "bbb", "ccc" }; String[] array2 = { "bbb", "ccc", "ddd" }; String[] array3 = { "ccc", "ccc", "ddd" }; String[] array4 = { "fff", "ggg", "hhh" }; 2、Listに配列を格納 List list = new ArrayList(); list.add(array1); list.add(array2); list.add(array3); list.add(array4); 3、Listの要素から"ccc"と"ddd"が2つマッチする要素を取得 上記の場合は"ccc"と"ddd"が2つマッチするのはarray2だけなのでarray2を取得する。 ※array3も"ccc"と"ddd"が2つありますが、"ccc"が2つあるので計3つマッチと判定して取得しない。 質問は上記3、の箇所です。 できればfor文でループさせて突合せ処理みたいなことは避けてスマートに実現する方法を探しております。 どなたか良い方法をご存知でしたらご教示下さい、お願い致します。

    • ベストアンサー
    • Java
  • リクエストからArrayListのデータが取得出来ない

    いつもお世話になっております。 表題の通り、リクエストからArrayListのデータが取得出来ないのです。 javaで、 ArrayList cmArray = new ArrayList(); データベースからデータ取得 request.setAttribute("category",cmArray.toArray()); jspで ArrayList list = new ArrayList(); list = (List)request.getAttribute("category"); と取得しようとしています。 そうすると、java.lang.ClassCastExceptionが発生してしまいます。 どなたか分かる方がいましたら、ご教授下さい。 よろしくお願い致します。

    • ベストアンサー
    • Java
電源が入らない
このQ&Aのポイント
  • mfc-j6973cdwで電源が入らない問題が発生しました。再度電源を入れても解決しないため、相談したいです。
  • Windows10でmfc-j6973cdwの電源が入らない状況が発生しました。有線LANで接続しており、試したこととしては再起動しても改善されない状況です。
  • mfc-j6973cdwの電源が入らなくなりました。有線LANで接続しており、Windows10を使用しています。電源を切って再度入れ直しても反応がないため、対処方法を知りたいです。
回答を見る

専門家に質問してみよう