none
2次元のコレクション RRS feed

  • 質問

  • 2次元のコレクションとは不適切な表現ですが、配列だと
    ary(0,0)="人間"、ary(0,1)="猿"、ary(0,2)="犬"
    ary(1,0)="金魚"、ary(1,1)="タイ"、ary(1,2)="スズキ"
    ary(2,0)="鳩"、ary(2,1)="カラス"、ary(2,2)="スズメ"
    のようになるものをAddメソッドを使って2次元のコレクションを作成したいと考えています。
    そのようなことは可能ですか?
    ary(0).add("人間")、ary(0).add("猿")
    のような感じでできればなあ。

    2021年3月13日 23:32

回答

  • こんな

    Module Module1
    
        Sub Main()
    
            Dim ary(2) As List(Of String) 'Listの配列 (コレクションの配列)
            'ary(0) = New List(Of String)()
            'ary(1) = New List(Of String)()
            'ary(2) = New List(Of String)()
            For i As Integer = 0 To ary.Length - 1
                ary(i) = New List(Of String)()
            Next
    
            ary(0).Add("人間")
            ary(0).Add("猿")
            ary(0).Add("犬")
            ary(2).Add("鳩")
    
    
            Dim lst As New List(Of List(Of String)) 'ListのList (コレクションのコレクション)
            'lst.Add(New List(Of String))
            'lst.Add(New List(Of String))
            'lst.Add(New List(Of String))
            For i As Integer = 0 To 3 - 1
                lst.Add(New List(Of String)())
            Next
    
            lst(0).Add("人間")
            lst(0).Add("猿")
    
    
            Dim dic As New Dictionary(Of Key, List(Of String)) 'Listのディクショナリ
            dic.Add(Key.哺乳類, New List(Of String)())
            dic.Add(Key.魚類, New List(Of String)())
            dic.Add(Key.鳥類, New List(Of String)())
    
            dic(Key.哺乳類).Add("人間")
            dic(Key.哺乳類).Add("猿")
            dic(Key.鳥類).Add("鳩")
    
        End Sub
    
        Enum Key
            哺乳類
            魚類
            鳥類
        End Enum
    
    End Module


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2021年3月14日 1:09
    • 回答としてマーク nebokken 2021年3月14日 1:22
    2021年3月14日 1:03

すべての返信

  • こんな

    Module Module1
    
        Sub Main()
    
            Dim ary(2) As List(Of String) 'Listの配列 (コレクションの配列)
            'ary(0) = New List(Of String)()
            'ary(1) = New List(Of String)()
            'ary(2) = New List(Of String)()
            For i As Integer = 0 To ary.Length - 1
                ary(i) = New List(Of String)()
            Next
    
            ary(0).Add("人間")
            ary(0).Add("猿")
            ary(0).Add("犬")
            ary(2).Add("鳩")
    
    
            Dim lst As New List(Of List(Of String)) 'ListのList (コレクションのコレクション)
            'lst.Add(New List(Of String))
            'lst.Add(New List(Of String))
            'lst.Add(New List(Of String))
            For i As Integer = 0 To 3 - 1
                lst.Add(New List(Of String)())
            Next
    
            lst(0).Add("人間")
            lst(0).Add("猿")
    
    
            Dim dic As New Dictionary(Of Key, List(Of String)) 'Listのディクショナリ
            dic.Add(Key.哺乳類, New List(Of String)())
            dic.Add(Key.魚類, New List(Of String)())
            dic.Add(Key.鳥類, New List(Of String)())
    
            dic(Key.哺乳類).Add("人間")
            dic(Key.哺乳類).Add("猿")
            dic(Key.鳥類).Add("鳩")
    
        End Sub
    
        Enum Key
            哺乳類
            魚類
            鳥類
        End Enum
    
    End Module


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2021年3月14日 1:09
    • 回答としてマーク nebokken 2021年3月14日 1:22
    2021年3月14日 1:03
  • なるほどです。3つ例を挙げていただきました。一番目、要素自体をコレクションにするというのは考えつきませんでした。ありがとうございます。
    2021年3月14日 1:24