2022 鐵人賽文 搬回點部落
開始試煉
如果要維護一個不重複的資料集合時 你會怎麼做
用List 每次檢查是否重複 還是開dictionary 呢
這時候就是 HashSet 出場的時候了
HashSet 跟 list 最大的差異 就是 HashSet 的內容是不重複的
來看一下範例code
void Main()
{
var list1 = new HashSet<int>();
list1.Add(1);
list1.Add(2);
list1.Add(2);
list1.Add(3);
list1.Remove(1);
list1.Dump();
var list2 = new HashSet<string>();
list2.Add("x");
list2.Add("x");
list2.Add("y");
list2.Add(default);
list2.Dump();
}
加資料用Add,移除用Remove
可以放null
只會保留不重複資料
來看一下自訂class
void Main()
{
var list3 = new HashSet<Employee>();
list3.Add(new Employee { Id = 1, Name = "a" });
list3.Add(new Employee { Id = 1, Name = "a" });
list3.Dump();
}
class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
資料怎麼重複了 應該有讀者想到前幾個試煉有提到
自訂class怎樣算相等了吧
就留給你們實做了
結束試煉
整個System.Collections還有提供許多物件
Queue (先進先出 排隊模式 第一個 先上車)
Stack (後進先出 彈匣模式 最後裝的子彈 先擊發)
都可以想看看 有沒有適合使用的時候
如果內容有誤請多鞭策謝謝