func (s *UniqueQueue) PushMany(values ...interface{}) {
	for _, v := range values {
		if !s.set.Has(v) {
			s.set.Put(v)
			s.queue.Push(v)
		}
	}
}
PushMany adds elements to the top of the queue
package queue
import (
	"github.com/cristaloleg/golds/set"
)
type UniqueQueue struct {
	set   *set.HashSet
	queue *ArrayQueue
}
func NewUniqueQueue() *UniqueQueue {
	s := &UniqueQueue{
		set:   set.NewHashSet(),
		queue: NewArrayQueue(),
	}
	return s
}
func (s *UniqueQueue) Size() int {
	return s.set.Size()
}
func (s *UniqueQueue) IsEmpty() bool {
	return s.set.IsEmpty()
}
func (s *UniqueQueue) Clear() {
	s.set.Clear()
	s.queue.Clear()
}
func (s *UniqueQueue) Flush() {
	s.set.Clear()
}
func (s *UniqueQueue) Push(value interface{}) {
	if s.set.Has(value) {
		return
	}
	s.set.Put(value)
	s.queue.Push(value)
}