c#數據結構 線性表篇 非常用線性集合總結

? ? ? ? 本人能力有限,使用了一些Ai的結論,如有不足還請斧正?

目錄

1.HashSet <=> Dictionary

2.SortedSet <=>提供升序方法的List

3.ArrayList<=>List

4.BitArray <=> Bit[] array

5.StringCollection <=>List

6.StringDictionary<=>Dictionary


?

1.HashSet (可用)<=> Dictionary<onlyTKey,notUseTValue>

? ? ? ? 使用途徑:因為字典的查詢元素:Contains? 平均時間復雜度為?(O(1)

? ? ? ? 所以一些場合將其代替List 但是普通字典又是鍵值對形式 所以不想要Value的時候可以使用HashSet

? ? ? ? 去除表中重復元素:

using System;
using System.Collections.Generic;class Program
{static void Main(){List<int> numbersWithDuplicates = new List<int> { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 };HashSet<int> uniqueNumbers = new HashSet<int>(numbersWithDuplicates);foreach (int number in uniqueNumbers){Console.WriteLine(number);}}
}

2.SortedSet (可用)<=>自己實現Sort的List

? SortedSet<T>?同樣是一個存儲唯一元素的集合,但它會對元素進行自動排序

? ?如果除了元素唯一性,你還需要集合中的元素有序,那么?SortedSet<T>?是不錯的選擇

using System;
using System.Collections.Generic;class Program
{static void Main(){SortedSet<int> sortedSet = new SortedSet<int>();sortedSet.Add(3);sortedSet.Add(1);sortedSet.Add(2);foreach (int num in sortedSet){Console.Write(num + " ");}Console.WriteLine();}
}

打印結果:1 2 3?

?3.BitArray(重要) <=> bool[] boolArray

? ? ? ? 學習過網絡的同學相信對這個東西并不陌生

????????BitArray?是一個專門用于存儲位值的集合類,它以緊湊的方式存儲布爾值,每個布爾值僅占 1 位。這意味著在存儲大量布爾值時,BitArray?占用的內存空間相對較小

? ? ? ? 其?提供了豐富的位操作方法,如?And(按位與)、Or(按位或)、Xor(按位異或)、Not(按位取反)等,方便進行復雜的位運算

????????支持動態調整大小,可以通過?Length?屬性改變其長度

using System;
using System.Collections;class Program
{static void Main(){BitArray bitArray1 = new BitArray(new bool[] { true, false, true });BitArray bitArray2 = new BitArray(new bool[] { false, true, true });bitArray1.And(bitArray2); // 按位與操作for (int i = 0; i < bitArray1.Length; i++){Console.WriteLine(bitArray1[i]);}}
}

4.ArrayList(淘汰)<=>List<Object>

????????ArrayList是非泛型集合 其存儲的是Objcet? 所以每次存儲和獲取元素時都需要進行裝箱(值類型轉換為?object?類型)和拆箱(object?類型轉換為值類型)操作,這會帶來一定的性能開銷

? ? ? ? 因此,不建議使用但是仍然可以用

using System;
using System.Collections;class Program
{static void Main(){ArrayList logEntries = new ArrayList();logEntries.Add("Operation started");logEntries.Add(123);logEntries.Add(DateTime.Now);foreach (object entry in logEntries){if (entry is string){Console.WriteLine($"String: {entry}");}else if (entry is int){Console.WriteLine($"Integer: {entry}");}else if (entry is DateTime){Console.WriteLine($"Date: {entry}");}}}
}

5.StringDictionary((淘汰))<=>Dictionary<string,string>

  • StringDictionaryStringDictionary?繼承自?DictionaryBase?類,實現了?IDictionaryICollection?和?IEnumerable?等非泛型接口。這意味著它是一個非泛型集合,在操作時需要進行類型轉換。
  • Dictionary<string, string>Dictionary<string, string>?是泛型集合,實現了?IDictionary<string, string>ICollection<KeyValuePair<string, string>>?和?IEnumerable<KeyValuePair<string, string>>?等泛型接口。泛型的使用使得代碼更加類型安全,無需進行顯式的類型轉換

? StringDictionary?是大小寫不敏感的。也就是說,在?StringDictionary?中,鍵?"Key"?和?"key"?被視為相同的鍵

using System;
using System.Collections.Specialized;class Program
{static void Main(){StringDictionary stringDict = new StringDictionary();stringDict.Add("Key", "Value1");stringDict["key"] = "Value2";Console.WriteLine(stringDict["Key"]); // 輸出: Value2}
}

? ? ? ? 但是也就僅限如此了?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81743.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爬蟲管理平臺-最新版本發布

TaskPyro 是什么&#xff1f; TaskPyro 是一個輕量級的 Python 任務調度平臺&#xff0c;專注于提供簡單易用的任務管理和爬蟲調度解決方案。它能夠幫助您輕松管理和調度 Python 任務&#xff0c;特別適合需要定時執行的爬蟲任務和數據處理任務。 官方文檔&#xff1a;https:/…

過采樣處理

一、數據讀取與初步觀察 首先&#xff0c;使用pandas庫讀取信用卡交易數據集&#xff1a; data pd.read_csv(r"./creditcard.csv") print(data.head())通過head()方法查看數據集的前幾行&#xff0c;初步了解數據的結構和內容。該數據集包含交易時間、交易金額、多…

潮乎盲盒商城系統全開源多級分銷推廣海報獎品兌換試玩概率OSS云存儲多端源碼

一、源碼描述 這是一套潮乎盲盒商城源碼&#xff0c;仿小叮當盲盒商城&#xff0c;后端Laravel框架前端uniappvue&#xff0c;前后端數據庫分離&#xff0c;支持四端同步數據&#xff08;H5小程序等&#xff09;&#xff0c;測試環境: php7.4&#xff0c;mysql5.6&#xff0c;…

c++環境和vscode常用的一些有用插件

環境 WSL需要安裝cmake 編譯器g14 應該是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件時候自動執行vscode 的cmake吧 error lens 方便每次顯示錯誤和警告的提示懶得每次點擊去看錯誤 Edit Sugge…

Spring 轉發 form-data 文件上傳請求時中文文件名亂碼

Spring 轉發 form-data 文件上傳請求時中文文件名亂碼 復現問題找原因解決問題參考 復現問題 后端有兩個接口&#xff1a; /upload 是文件上傳的接口。 /forward 是轉發文件上傳請求的接口。 RequestMapping RestController public class FileUploadController {/*** 直接調…

MySQL 8.4.4 安全升級指南:從漏洞修復到版本升級全流程解析

目錄 二、升級前關鍵注意事項 1. 數據安全與備份 2. 版本兼容性與路徑規劃 三、分步升級操作流程 1. 環境預檢與準備 2. 安裝包部署 3. 強制升級組件 4. 驗證與啟動 一、背景與必要性 近期安全掃描發現生產環境的 MySQL 數據庫存在多個高危漏洞(CVE 詳情參見Oracle 官…

vulkanscenegraph顯示傾斜模型(6.4)-多線程下的記錄與提交

前言 上章深入分析了幀循環中呈現階段的具體實現。本章將分析多線程下的記錄與提交&#xff0c;進一步剖析vsg幀循環過程中的同步機制&#xff0c;并揭露信號量(VkSemaphore)和圍欄(VkFence)以及vsg::FrameBlock與vsg::Barrier在其中的作用。 目錄 1 信號量(VkSemaphore)、柵欄…

Python爬蟲實戰:獲取扇貝單詞數據并分析,為用戶高效學習單詞做參考

一、引言 隨著互聯網的迅猛發展,在線學習資源日益豐富多樣。扇貝單詞作為一款備受歡迎的在線英語學習平臺,積累了海量的單詞學習數據。借助 Python 強大的爬蟲技術獲取這些數據,并運用數據分析和機器學習方法進行深度挖掘,能夠為用戶量身定制更個性化、更高效的單詞學習方…

【Vagrant+VirtualBox創建自動化虛擬環境】Ansible-Playbook

Vagrant 后續Ansible實戰&#xff1a;【Ansible自動化運維實戰&#xff1a;從Playbook到負載均衡指南】-CSDN博客 Vagrant是一個基于Ruby的工具&#xff0c;用于創建和部署虛擬化開發環境。它使用Oracle的開源VirtualBox虛擬化系統&#xff0c;使用 Chef創建自動化虛擬環境 Do…

Codigger Desktop:重新定義數字工作與生活方式

Codigger Desktop是一款革命性的智能桌面操作系統&#xff0c;專為現代數字生活和工作場景打造。它不僅成為開發者的強大生產力工具&#xff0c;更是普通用戶日常數字生活的得力助手&#xff0c;完美實現了專業性與易用性的平衡。 Multimedia Desktop全能數字生活平臺 重新定…

Servlet+tomcat

serverlet 定義&#xff1a;是一個接口&#xff0c;定義了java類被瀏覽器&#xff08;tomcat識別&#xff09;的規則 所以我們需要自定義一個類&#xff0c;實現severlet接口復寫方法 通過配置類實現路徑和servlet的對應關系 執行原理 當用戶在瀏覽器輸入路徑&#xff0c;會…

什么是 DDoS 攻擊?高防 IP 如何有效防護?2025全面解析與方案推薦

一、DDoS 攻擊&#xff1a;互聯網時代的 “數字核武器” 1. DDoS 攻擊的本質與原理 ** 分布式拒絕服務攻擊&#xff08;DDoS&#xff09;** 通過操控海量僵尸設備&#xff0c;向目標服務器發送洪水般請求&#xff0c;耗盡帶寬、連接或計算資源&#xff0c;導致合法用戶無法訪…

Circular Plot系列(一): 環形熱圖繪制

針對近期多個粉絲咨詢環形圖的繪制&#xff0c;我意識到&#xff0c;我們似乎沒有真正介紹過circle圖&#xff0c;但這一類圖確是非常常用的圖&#xff0c;所以這里詳細學習一下circle的繪制&#xff0c;使用的是circlize包&#xff0c;功能很完善&#xff1a;安裝包, #https:/…

【數據挖掘】時間序列預測-時間序列預測策略

時間序列預測策略 &#xff08;1&#xff09;單步預測與多步預測&#xff08;2&#xff09;直接多步預測&#xff08;3&#xff09;遞歸多步預測&#xff08;4&#xff09;直接遞歸的混合預測&#xff08;5&#xff09;多輸入多輸出預測 &#xff08;1&#xff09;單步預測與多…

【LLM】deepseek R1之GRPO訓練筆記(持續更新)

note 相關框架對比&#xff1a; 需微調模型且資源有限 → Unsloth&#xff1b;本地隱私優先的小規模推理 → Ollama&#xff1b;復雜邏輯或多模態任務 → SGLang&#xff1b;高并發生產環境 → vLLM 微調SFT和GRPO是確實能學到新知識的四種格式&#xff08;messages、sharegpt…

【數據結構】--- 單鏈表的增刪查改

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言 概念&#xff1a; 單鏈表的結構 我們設定一個哨兵位頭節點給鏈…

【JAVA】數據類型與變量:深入理解棧內存分配(4)

核心知識點詳細解釋 Java 的基本數據類型和引用數據類型 基本數據類型 Java 有 8 種基本數據類型&#xff0c;它們可以分為 4 類&#xff1a; 整數類型&#xff1a;byte&#xff08;1 字節&#xff09;、short&#xff08;2 字節&#xff09;、int&#xff08;4 字節&#…

ReentrantLock實現公平鎖和非公平鎖

在 Java 里&#xff0c;公平鎖和非公平鎖是多線程編程中用于同步的兩種鎖機制&#xff0c;它們的主要差異在于獲取鎖的順序規則。下面是對二者的詳細介紹&#xff1a; 公平鎖 公平鎖遵循 “先來先服務” 原則&#xff0c;也就是線程獲取鎖的順序和請求鎖的順序一致。先請求鎖…

一篇擼清 Http,SSE 與 WebSocket

HTTP,SSE 和WebSocket都是網絡傳輸的協議,本篇快速介紹三者的概念和比較。 SSE(Server-Sent Events) 是什么? SSE(Server-Sent Events),服務器發送事件, 是一種基于 HTTP 的輕量級協議,允許服務器主動向客戶端(如瀏覽器)推送實時數據。它設計用于單向通信(服務器到…

5個重要的財務指標講解

1&#xff09;凈資產收益率 2&#xff09;銷售凈利率 3&#xff09; 銷售毛利率 4&#xff09;銷售成本率 5&#xff09; 期間費用率 好的&#xff0c;我將通過一個假設的案例&#xff08;某公司2023年數據&#xff09;逐步解釋這些財務指標&#xff0c;并用具體數字演示計算…