github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/soliton/set/int_set.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package set 15 16 // IntSet is a int set. 17 type IntSet map[int]struct{} 18 19 // NewIntSet builds a IntSet. 20 func NewIntSet(is ...int) IntSet { 21 set := make(IntSet, len(is)) 22 for _, x := range is { 23 set.Insert(x) 24 } 25 return set 26 } 27 28 // Exist checks whether `val` exists in `s`. 29 func (s IntSet) Exist(val int) bool { 30 _, ok := s[val] 31 return ok 32 } 33 34 // Insert inserts `val` into `s`. 35 func (s IntSet) Insert(val int) { 36 s[val] = struct{}{} 37 } 38 39 // Count returns the number in Set s. 40 func (s IntSet) Count() int { 41 return len(s) 42 } 43 44 // Int64Set is a int64 set. 45 type Int64Set map[int64]struct{} 46 47 // NewInt64Set builds a Int64Set. 48 func NewInt64Set(xs ...int64) Int64Set { 49 set := make(Int64Set, len(xs)) 50 for _, x := range xs { 51 set.Insert(x) 52 } 53 return set 54 } 55 56 // Exist checks whether `val` exists in `s`. 57 func (s Int64Set) Exist(val int64) bool { 58 _, ok := s[val] 59 return ok 60 } 61 62 // Insert inserts `val` into `s`. 63 func (s Int64Set) Insert(val int64) { 64 s[val] = struct{}{} 65 } 66 67 // Count returns the number in Set s. 68 func (s Int64Set) Count() int { 69 return len(s) 70 }