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  }