Go 語言簡單實現HashSet

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

公司有個需求,就是能夠對列表去重。本屌原本想直接用for迴圈實現,後來去查了查Java的實現方式,大開眼界。

Set,是指數學裡的集合。集合當中不能有重複的元素。判斷是否有重複,可以使用雜湊的方法。Java容器當中有基於雜湊實現的HashSet。把元素都放入HashSet當中,如果有重複,則會插入失敗。這樣就能判斷出來是否重複了。

而Golang並沒有這種進階的容器。只是找了一個大神實現的,稍微改了一下,能夠支援字串檢測。

http://play.golang.org/p/_FvECoFvhq

type HashSet struct {set map[string]bool}func NewHashSet() *HashSet {return &HashSet{make(map[string]bool)}}func (set *HashSet) Add(i string) bool {_, found := set.set[i]set.set[i] = truereturn !found //False if it existed already}func (set *HashSet) Get(i string) bool {_, found := set.set[i]return found //true if it existed already}func (set *HashSet) Remove(i string) {delete(set.set, i)}

內部使用map來儲存雜湊結果。而雜湊函數直接就是使用字串作為雜湊結果。

######參考文獻+ 【1】判斷int數組中的元素是否重複 - 百度知道+ 【2】Sets Data Structure in Golang - StackExchange+ 【3】java裡有沒有專門判斷List裡有重複的資料?最好能知道是第幾行重複. - CSDN論壇

原文連結:Go 語言簡單實現HashSet,轉載請註明來源!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.