擁抱「資料結構」的「演算法」(17) - 集合和映射
前言 講完雜湊之後,接著來認識最後兩個常見的資料結構:集合和映射,剛好他們也都可以延伸使用到 HashMap與 HashSet 生活常識 生活中有哪些東西具有 唯一性 呢?例如全世界找不到第二個你XD,我們的常常使用的 身分證 與 車牌號碼 ,也都具有 唯一性 的,所以可以快速辨別身分 圖片來源: https://www.pexels.com/zh-tw/photo/132774/ 你有使用 網路字典 的習慣嗎?當我們 輸入某個字詞 ,按下搜尋之後,網頁就會 顯示相關的說明文字 ,字典內含有大量的資料,如何快速找到字詞的相關解釋, 關鍵字 就十分重要 或是像 office word 中的目錄功能或一般閱讀書籍的目錄,也可以讓我們快速查找相關內容以及對應的頁碼 圖片來源: microsoft 專業知識 - 集合 Collection 會儲存多筆資料,像是陣列(Array)、串列(List)與 HashSet 都是集合的一種,今天會特別介紹一下 HashSet 集合的特性 排序性:會自動將資料由小至大排序 (例如:SortedSet) 順序性:資料會以某種順序儲存資料 (例如:List) 重覆性:資料是否允許重覆 (例如:List 允許重覆,HashSet 不允許重覆) 鍵值:可使用鍵值來存取資料,每個集合中的元素都有自己的鍵值,鍵值具唯一性 專業知識 - HashSet 是一種實作集合(Collection)的類別 特性 無排序 無順序 資料 不可重覆 ,可以含有空元素 無鍵值 程式碼 下面用 C# 的 HashSet 類別來操作給大家看,我們將數字 0 ~ 10 各別 除以 5 在取餘數 將資料存入 HashSet 與 串列 List 中,會發現資料若已經存在 HashSet 中,則不會重覆新增 數字 除以 5 取餘數 0 0 1 1 2 2 3 3 4 4 5 0 6 1 7 2 8 3 9 4 10 0 HashSet< int > set = new HashSet< int >(); //宣告一個集合 List< int > list = new List< int >(); //宣告一個串列 for ( int i = 0 ; i ...