Class: SortedSet

Inherits:
Set
  • Object
show all
Defined in:
lib/sorted_set.rb,
lib/sorted_set/jruby.rb,
lib/sorted_set/ruby3.rb,
lib/sorted_set/ruby4.rb

Overview

Ruby >= 4.0: Set is a built-in class backed by C code and no longer uses @hash. Subclassing Set automatically includes Set::SubclassCompatible, which delegates composite operations to primitive methods. We override those primitives to use RBTree.

Instance Method Summary collapse

Constructor Details

#initialize(enum = nil, &block) ⇒ SortedSet

Returns a new instance of SortedSet.



9
10
11
12
# File 'lib/sorted_set/jruby.rb', line 9

def initialize(enum = nil, &block)
  @tree = java.util.TreeSet.new
  super
end

Instance Method Details

#add(o) ⇒ Object Also known as: <<



14
15
16
17
18
# File 'lib/sorted_set/jruby.rb', line 14

def add(o)
  check_frozen
  @tree.add(o)
  self
end

#clearObject



47
48
49
50
51
# File 'lib/sorted_set/jruby.rb', line 47

def clear
  check_frozen
  @tree.clear
  self
end

#delete(o) ⇒ Object



21
22
23
24
25
# File 'lib/sorted_set/jruby.rb', line 21

def delete(o)
  check_frozen
  @tree.remove(o)
  self
end

#each(&block) ⇒ Object



32
33
34
35
36
# File 'lib/sorted_set/jruby.rb', line 32

def each(&block)
  block or return enum_for(__method__) { size }
  @tree.each(&block)
  self
end

#empty?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/sorted_set/jruby.rb', line 43

def empty?
  @tree.is_empty
end

#freezeObject



72
73
74
# File 'lib/sorted_set/jruby.rb', line 72

def freeze
  super
end

#hashObject



68
69
70
# File 'lib/sorted_set/jruby.rb', line 68

def hash
  @tree.to_a.hash
end

#include?(o) ⇒ Boolean Also known as: member?

Returns:

  • (Boolean)


27
28
29
# File 'lib/sorted_set/jruby.rb', line 27

def include?(o)
  @tree.contains(o)
end

#initialize_clone(orig, freeze: nil) ⇒ Object



81
82
83
84
# File 'lib/sorted_set/jruby.rb', line 81

def initialize_clone(orig, freeze: nil)
  super
  @tree = orig.instance_variable_get(:@tree).dup
end

#initialize_dup(orig) ⇒ Object



76
77
78
79
# File 'lib/sorted_set/jruby.rb', line 76

def initialize_dup(orig)
  super
  @tree = orig.instance_variable_get(:@tree).dup
end

#replace(enum) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/sorted_set/jruby.rb', line 53

def replace(enum)
  check_frozen
  if enum.instance_of?(self.class)
    @tree = enum.instance_variable_get(:@tree).dup
  else
    @tree.clear
    merge(enum)
  end
  self
end

#sizeObject Also known as: length



38
39
40
# File 'lib/sorted_set/jruby.rb', line 38

def size
  @tree.size
end

#to_aObject



64
65
66
# File 'lib/sorted_set/jruby.rb', line 64

def to_a
  @tree.to_a
end