Skip to main content

Set

General

A collection that contains no duplicate elements. More formally , sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this class models the mathematical set abstraction.

var set = new Set();

Creates a new, empty Set instance.

Reference

Instance methods

MethodSignatureReturn TypeDescription
add / setset.add(value : any)boolAdds a value to the set if not already present; returns size if added
removeset.remove(value : any)boolRemoves the specified value; returns true if the value existed
containsset.contains(value : any)boolReturns true if the value exists in the set
clearset.clear()voidRemoves all elements from the set
sizeset.size()intReturns the number of elements in the set
cloneset.clone()SetReturns a shallow copy of the set
unionset.union(other : Set)SetReturns a new set containing all elements from both sets
intersectionset.intersection(other : Set)SetReturns a new set with elements common to both sets
differenceset.difference(other : Set)SetReturns a new set with elements in this set but not in the other
isSubsetOfset.isSubsetOf(other : Set)boolReturns true if this set is a subset of the other
isSupersetOfset.isSupersetOf(other : Set)boolReturns true if this set is a superset of the other
equalsset.equals(other : Set)boolReturns true if both sets contain exactly the same elements
isEmpty / emptyset.isEmpty()boolReturns true if the set is empty
toStringset.toString()stringReturns a string representation of the set

Examples

add

add(value : any) : bool

  • Adds a value to the set if not already present; returns size if added
var set = new Set();

// basic insert
println set.add(10); // 1
println set.add(20); // 2

// duplicate insert
println set.add(10); // 2

// mixed types
set.add("hello");
set.add(true);

println set.size(); // 4

// chaining behavior test (not actual chaining)
var result = set.add(30);
println result; // 5

remove

remove(value : any) : bool

  • Removes the specified value; returns true if the value existed
### Examples

### `remove(value : any) : bool`

```ysharp
var set = new Set();

// initial data
set.add(10);
set.add(20);
set.add(30);

// remove existing element
println set.remove(20); // true
println set.size(); // 2
println set.contains(20); // false

// remove non-existing element
println set.remove(999); // false

// remove remaining elements
set.remove(10);
set.remove(30);

println set.size(); // 0
println set.empty(); // true

// remove from empty set
println set.remove(1); // false

contains

contains(value : any) : bool

  • Returns true if the value exists in the set
var set = new Set();

// initial data
set.add(10);
set.add(20);
set.add(30);

// existing values
println set.contains(10); // true
println set.contains(20); // true

// non-existing value
println set.contains(999); // false

// mixed types
set.add("hello");
println set.contains("hello"); // true
println set.contains("world"); // false

// after removal
set.remove(10);
println set.contains(10); // false

clear

clear() : void

  • Removes all elements from the set
var set = new Set();

// initial data
set.add(10);
set.add(20);
set.add(30);

println set.size(); // 3

// clear all elements
set.clear();

println set.size(); // 0
println set.empty(); // true

// operations after clear
println set.contains(10); // false

// add again after clear
set.add(100);
println set.size(); // 1
println set.contains(100); // true

size

size() : int

  • Returns the number of elements in the set
var set = new Set();

// empty set
println set.size(); // 0

// add elements
set.add(10);
set.add(20);
set.add(30);

println set.size(); // 3

// duplicate insert (should not change size)
set.add(20);
println set.size(); // 3

// remove element
set.remove(10);
println set.size(); // 2

// clear set
set.clear();
println set.size(); // 0

clone

clone() : Set

  • Returns a shallow copy of the set
var set1 = new Set();

// initial data
set1.add(10);
set1.add(20);
set1.add(30);

// clone
var set2 = set1.clone();

println set1.size(); // 3
println set2.size(); // 3

// verify contents
println set2.contains(10); // true
println set2.contains(20); // true
println set2.contains(30); // true

// modify original
set1.add(40);
set1.remove(10);

// cloned set should NOT change
println set1.size(); // 3
println set2.size(); // 3

println set2.contains(10); // true
println set2.contains(40); // false

// modify clone
set2.add(100);

// original should NOT change
println set1.contains(100); // false
println set2.contains(100); // true

union

union(other : Set) : Set

  • Returns a new set containing all elements from both sets
var a = new Set();
a.add(1);
a.add(2);
a.add(3);

var b = new Set();
b.add(3);
b.add(4);
b.add(5);

// union
var u = a.union(b);

// result should contain all unique elements
println u.size(); // 5

println u.contains(1); // true
println u.contains(2); // true
println u.contains(3); // true
println u.contains(4); // true
println u.contains(5); // true

// original sets should NOT change
println a.size(); // 3
println b.size(); // 3

// union with empty set
var empty = new Set();

var u2 = a.union(empty);

println u2.size(); // 3
println u2.contains(1); // true
println u2.contains(2); // true
println u2.contains(3); // true

intersection

intersection(other : Set) : Set

  • Returns a new set with elements common to both sets
var a = new Set();
a.add(1);
a.add(2);
a.add(3);

var b = new Set();
b.add(2);
b.add(3);
b.add(4);

// intersection
var i = a.intersection(b);

// should contain only common elements
println i.size(); // 2

println i.contains(2); // true
println i.contains(3); // true

// non-common elements
println i.contains(1); // false
println i.contains(4); // false

// original sets should NOT change
println a.size(); // 3
println b.size(); // 3

// intersection with empty set
var empty = new Set();

var i2 = a.intersection(empty);

println i2.size(); // 0
println i2.empty(); // true

difference

difference(other : Set) : Set

  • Returns a new set with elements in this set but not in the other
var a = new Set();
a.add(1);
a.add(2);
a.add(3);

var b = new Set();
b.add(2);
b.add(4);

// difference (a - b)
var d = a.difference(b);

// should contain elements in a but not in b
println d.size(); // 2

println d.contains(1); // true
println d.contains(3); // true

// excluded elements
println d.contains(2); // false
println d.contains(4); // false

// original sets should NOT change
println a.size(); // 3
println b.size(); // 2

// difference with empty set
var empty = new Set();

var d2 = a.difference(empty);

println d2.size(); // 3
println d2.contains(1); // true
println d2.contains(2); // true
println d2.contains(3); // true

// reverse difference (empty - a)
var d3 = empty.difference(a);

println d3.size(); // 0
println d3.empty(); // true

isSubsetOf

isSubsetOf(other : Set) : bool

  • Returns true if this set is a subset of the other
var a = new Set();
a.add(1);
a.add(2);

var b = new Set();
b.add(1);
b.add(2);
b.add(3);

// a ⊆ b
println a.isSubsetOf(b); // true

// b ⊆ a
println b.isSubsetOf(a); // false

// identical sets
var c = new Set();
c.add(1);
c.add(2);

println a.isSubsetOf(c); // true
println c.isSubsetOf(a); // true

// subset with missing element
c.add(5);
println a.isSubsetOf(c); // true
println c.isSubsetOf(a); // false

// empty set is subset of any set
var empty = new Set();

println empty.isSubsetOf(a); // true
println empty.isSubsetOf(empty); // true

// non-empty set is not subset of empty set
println a.isSubsetOf(empty); // false

isSupersetOf

isSupersetOf(other : Set) : bool

  • Returns true if this set is a superset of the other
var a = new Set();
a.add(1);
a.add(2);
a.add(3);

var b = new Set();
b.add(1);
b.add(2);

// a ⊇ b
println a.isSupersetOf(b); // true

// b ⊇ a
println b.isSupersetOf(a); // false

// identical sets
var c = new Set();
c.add(1);
c.add(2);
c.add(3);

println a.isSupersetOf(c); // true
println c.isSupersetOf(a); // true

// superset with extra element
a.add(4);
println a.isSupersetOf(c); // true

// empty set cases
var empty = new Set();

println a.isSupersetOf(empty); // true
println empty.isSupersetOf(a); // false
println empty.isSupersetOf(empty); // true

equals

equals(other : Set) : bool

  • Returns true if both sets contain exactly the same elements
var a = new Set();
a.add(1);
a.add(2);
a.add(3);

var b = new Set();
b.add(3);
b.add(2);
b.add(1);

// same elements, different order
println a.equals(b); // true

// different elements
b.add(4);
println a.equals(b); // false

// identical sets
var c = new Set();
c.add(1);
c.add(2);
c.add(3);

println a.equals(c); // true

// missing element
c.remove(3);
println a.equals(c); // false

// empty sets
var empty1 = new Set();
var empty2 = new Set();

println empty1.equals(empty2); // true

// mixed types
var d = new Set();
d.add(10);
d.add("hello");

var e = new Set();
e.add("hello");
e.add(10);

println d.equals(e); // true

isEmpty / empty

isEmpty() : bool

  • Returns true if the set is empty
var set = new Set();

// empty set
println set.isEmpty(); // true
println set.empty(); // true

// add element
set.add(10);

println set.isEmpty(); // false
println set.empty(); // false

// remove element
set.remove(10);

println set.isEmpty(); // true
println set.empty(); // true

// multiple operations
set.add(1);
set.add(2);
set.clear();

println set.isEmpty(); // true
println set.empty(); // true

toString

toString() : string

  • Returns a string representation of the set
var set = new Set();

// empty set
println set.toString(); // []

// add elements
set.add(10);
set.add(20);
set.add(30);

println set.toString(); // [10, 20, 30] (order may vary)

// duplicate insert (should not change)
set.add(20);
println set.toString(); // [10, 20, 30]

// mixed types
set.add("hello");
set.add(true);

println set.toString(); // [10, 20, 30, "hello", true] (order may vary)

// after removal
set.remove(20);
println set.toString(); // [10, 30, "hello", true] (order may vary)

// after clear
set.clear();
println set.toString(); // []