<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Visual Basic 中的集合 > 原文: [https://zetcode.com/lang/visualbasic/collections/](https://zetcode.com/lang/visualbasic/collections/) 在本章中,我們將處理 Visual Basic 集合。 .NET 框架為數據存儲和檢索提供了專門的類。 在上一章中,我們描述了數組。 集合是對數組的增強。 在 Visual Basic 中,有兩種不同的集合類型。 標準集合位于`System.Collections`命名空間下,而泛型集合位于`System.Collections.Generic`下。 泛型集合更靈活,是處理數據的首選方式。 .NET Framework 2.0 中引入了泛型集合或泛型。 泛型可增強代碼重用性,類型安全性和性能。 泛型編程是一種計算機編程樣式,其中,算法根據待指定的后來的類型編寫,然后在需要作為參數提供的特定類型時實例化。 這種方法由 Ada 于 1983 年率先提出,它允許編寫僅在使用時所使用的類型集不同的常見功能或類型,從而減少了重復。 (維基百科) ## `ArrayList` `ArrayList`是來自標準`System.Collections`命名空間的集合。 它是一個動態數組。 它提供對元素的隨機訪問。 `ArrayList`隨著添加數據而自動擴展。 與數組不同,`ArrayList`可以保存多種數據類型的數據。 `ArrayList`中的元素通過整數索引訪問。 索引從零開始。 元素的索引以及在`ArrayList`末尾的插入和刪除需要固定的時間。 在動態數組的中間插入或刪除元素的成本更高。 這需要線性時間。 ```vb Option Strict On Imports System.Collections Module Example Class Empty End Class Sub Main() Dim da As ArrayList = New ArrayList() da.Add("Visual Basic") da.Add(344) da.Add(55) da.Add(New Empty) da.Remove(55) For Each el As Object In da Console.WriteLine(el) Next End Sub End Module ``` 在上面的示例中,我們創建了一個`ArrayList`集合。 我們添加了一些元素。 它們具有各種數據類型:一個字符串,兩個整數和一個類對象。 ```vb Imports System.Collections ``` 為了使用`ArrayList`集合,我們需要導入`System.Collections`命名空間。 ```vb Dim da As ArrayList = New ArrayList() ``` `ArrayList`集合已創建。 ```vb da.Add("Visual Basic") da.Add(344) da.Add(55) da.Add(New Empty) ``` 我們使用`Add()`方法將五個元素添加到數組中。 ```vb da.Remove(55) ``` 我們刪除一個元素。 ```vb For Each el As Object In da Console.WriteLine(el) Next ``` 我們遍歷數組并將其元素打印到控制臺。 ## `List` `List`是可以通過索引訪問的對象的強類型列表。 可以在`System.Collections.Generic`命名空間下找到。 ```vb Option Strict On Imports System.Collections.Generic Module Example Sub Main() Dim langs As New List(Of String) langs.Add("Java") langs.Add("C#") langs.Add("C") langs.Add("C++") langs.Add("Ruby") langs.Add("Javascript") Console.WriteLine(langs.Contains("C#")) Console.WriteLine(langs(1)) Console.WriteLine(langs(2)) langs.Remove("C#") langs.Remove("C") Console.WriteLine(langs.Contains("C#")) langs.Insert(4, "Haskell") langs.Sort() For Each lang As String In langs Console.WriteLine(lang) Next End Sub End Module ``` 在前面的示例中,我們使用`List`集合。 ```vb Imports System.Collections.Generic ``` 為了使用`List`集合,我們需要導入`System.Collections.Generic`命名空間。 ```vb Dim langs As New List(Of String) ``` 將創建一個通用動態數組。 我們指定將使用帶有`Of`關鍵字的字符串。 ```vb langs.Add("Java") langs.Add("C#") langs.Add("C") ... ``` 我們使用`Add()`方法將元素添加到列表中。 ```vb Console.WriteLine(langs.Contains("C#")) ``` 我們使用`Contains()`方法檢查列表是否包含特定的字符串。 ```vb Console.WriteLine(langs(1)) Console.WriteLine(langs(2)) ``` 我們使用索引符號訪問`List`的第二個和第三個元素。 ```vb langs.Remove("C#") langs.Remove("C") ``` 我們從列表中刪除兩個字符串。 ```vb langs.Insert(4, "Haskell") ``` 我們在特定位置插入一個字符串。 ```vb langs.Sort() ``` 我們使用`Sort()`方法對元素進行排序。 ```vb $ ./list.exe True C# C False C++ Haskell Java Javascript Ruby ``` 示例的結果。 ## `LinkedList` `LinkedList`是 Visual Basic 中的通用雙鏈表。 `LinkedList`僅允許順序訪問。 `LinkedList`允許進行固定時間的插入或刪除,但只允許順序訪問元素。 由于鏈表需要額外的存儲空間以供參考,因此對于諸如字符之類的小型數據項列表來說,它們是不切實際的。 與動態數組不同,可以將任意數量的項目添加到鏈表(當然受內存限制)而無需重新分配,這是一項昂貴的操作。 ```vb Option Strict On Imports System.Collections.Generic Module Example Sub Main() Dim nums As New LinkedList(Of Integer) nums.AddLast(23) nums.AddLast(34) nums.AddLast(33) nums.AddLast(11) nums.AddLast(6) nums.AddFirst(9) nums.AddFirst(7) Dim node as LinkedListNode(Of Integer) node = nums.Find(6) nums.AddBefore(node, 5) For Each num As Integer In nums Console.WriteLine(num) Next End Sub End Module ``` 這是一個`LinkedList`示例,其中包含一些方法。 ```vb Dim nums As New LinkedList(Of Integer) ``` 這是一個整數`LinkedList`。 ```vb nums.AddLast(23) ... nums.AddFirst(9) ``` 我們使用`AddLast()`和`AddFirst()`方法填充鏈表。 ```vb Dim node as LinkedListNode(Of Integer) node = nums.Find(6) nums.AddBefore(node, 5) ``` `LinkedList`由節點組成。 我們找到一個特定的節點,并在其之前添加一個元素。 ```vb For Each num As Integer In nums Console.WriteLine(num) Next ``` 將所有元素打印到控制臺。 ## `Dictionary` `dictionary`,也稱為關聯數組,是唯一鍵和值的集合,其中每個鍵與一個值相關聯。 檢索和添加值非常快。 字典占用更多內存,因為每個值都有一個鍵。 ```vb Option Strict On Imports System.Collections.Generic Module Example Sub Main() Dim domains As New Dictionary(Of String, String) domains.Add("de", "Germany") domains.Add("sk", "Slovakia") domains.Add("us", "United States") domains.Add("ru", "Russia") domains.Add("hu", "Hungary") domains.Add("pl", "Poland") Console.WriteLine(domains("sk")) Console.WriteLine(domains("de")) Console.WriteLine("Dictionary has {0} items", _ domains.Count) Console.WriteLine("Keys of the dictionary:") Dim keys As Dictionary(Of String, String).KeyCollection = domains.Keys For Each key As String In keys Console.WriteLine("{0}", key) Next Console.WriteLine("Values of the dictionary:") Dim vals As Dictionary(Of String, String).ValueCollection = domains.Values For Each val As String In vals Console.WriteLine("{0}", val) Next Console.WriteLine("Keys and values of the dictionary:") For Each kvp As KeyValuePair(Of String, String) In domains Console.WriteLine("Key = {0}, Value = {1}", _ kvp.Key, kvp.Value) Next End Sub End Module ``` 我們有一本字典,我們在其中將域名映射到其國家名稱。 ```vb Dim domains As New Dictionary(Of String, String) ``` 我們創建一個包含字符串鍵和值的字典。 ```vb domains.Add("de", "Germany") domains.Add("sk", "Slovakia") domains.Add("us", "United States") ... ``` 我們將一些數據添加到字典中。 第一個字符串是鍵。 第二是值。 ```vb Console.WriteLine(domains("sk")) Console.WriteLine(domains("de")) ``` 在這里,我們通過它們的鍵檢索兩個值。 ```vb Console.WriteLine("Dictionary has {0} items", _ domains.Count) ``` 我們通過引用`Count`屬性來打印項目數。 ```vb Dim keys As Dictionary(Of String, String).KeyCollection = domains.Keys For Each key As String In keys Console.WriteLine("{0}", key) Next ``` 這些行從字典中檢索所有鍵。 ```vb Dim vals As Dictionary(Of String, String).ValueCollection = domains.Values For Each val As String In vals Console.WriteLine("{0}", val) Next ``` 這些行從字典中檢索所有值。 ```vb For Each kvp As KeyValuePair(Of String, String) In domains Console.WriteLine("Key = {0}, Value = {1}", _ kvp.Key, kvp.Value) Next ``` 最后,我們同時打印字典的鍵和值。 ```vb ./dictionary.exe Slovakia Germany Dictionary has 6 items Keys of the dictionary: de sk us ru hu pl Values of the dictionary: Germany Slovakia United States Russia Hungary Poland Keys and values of the dictionary: Key = de, Value = Germany Key = sk, Value = Slovakia Key = us, Value = United States Key = ru, Value = Russia Key = hu, Value = Hungary Key = pl, Value = Poland ``` 這是示例的輸出。 ## `queue` `queue`是先進先出(FIFO)數據結構。 添加到隊列中的第一個元素將是第一個要刪除的元素。 隊列可以用于處理消息出現時的消息,也可以用于消息到達時為客戶服務的消息。 首先服務的是第一個客戶。 ```vb Option Strict On Imports System.Collections.Generic Module Example Sub Main() Dim msgs As New Queue(Of String) msgs.Enqueue("Message 1") msgs.Enqueue("Message 2") msgs.Enqueue("Message 3") msgs.Enqueue("Message 4") msgs.Enqueue("Message 5") Console.WriteLine(msgs.Dequeue()) Console.WriteLine(msgs.Peek()) Console.WriteLine(msgs.Peek()) Console.WriteLine() For Each msg As String In msgs Console.WriteLine(msg) Next End Sub End Module ``` 在我們的示例中,我們有一個包含消息的隊列。 ```vb Dim msgs As New Queue(Of String) ``` 創建字符串隊列。 ```vb msgs.Enqueue("Message 1") msgs.Enqueue("Message 2") ... ``` `Enqueue()`將消息添加到隊列末尾。 ```vb Console.WriteLine(msgs.Dequeue()) ``` `Dequeue()`方法刪除并返回隊列開頭的項目。 ```vb Console.WriteLine(msgs.Peek()) ``` `Peek()`方法從隊列中返回下一項,但不會將其從集合中刪除。 ```vb $ ./queue.exe Message 1 Message 2 Message 2 Message 2 Message 3 Message 4 Message 5 ``` `Dequeue()`方法從集合中刪除`Message 1`。 `Peek()`方法沒有。 `Message 2`保留在集合中。 ## `stack` `stack`是后進先出(LIFO)數據結構。 添加到隊列中的最后一個元素將是第一個要刪除的元素。 C 語言使用棧將本地數據存儲在函數中。 實現計算器時,還將使用該棧。 ```vb Option Strict On Imports System.Collections.Generic Module Example Sub Main() Dim stc As New Stack(Of Integer) stc.Push(1) stc.Push(4) stc.Push(3) stc.Push(6) stc.Push(4) Console.WriteLine(stc.Pop()) Console.WriteLine(stc.Peek()) Console.WriteLine(stc.Peek()) Console.WriteLine() For Each item As Integer In stc Console.WriteLine(item) Next End Sub End Module ``` 上面有一個簡單的棧示例。 ```vb Dim stc As New Stack(Of Integer) ``` 創建一個`Stack`數據結構。 ```vb stc.Push(1) stc.Push(4) ... ``` `Push()`方法將一個項目添加到棧的頂部。 ```vb Console.WriteLine(stc.Pop()) ``` `Pop()`方法從棧頂部刪除并返回該項目。 ```vb Console.WriteLine(stc.Peek()) ``` `Peek()`方法從棧頂部返回該項目。 它不會刪除它。 ```vb $ ./stack.exe 4 6 6 6 3 4 1 ``` 輸出。 Visual Basic 教程的這一部分專用于 Visual Basic 中的集合。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看