ts-collection
Version:
This is re-write of the java collection classes in typescript. There is some tweak as typescript templates are not as equivalent as Java.
142 lines (141 loc) • 5.48 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var abstractset_1 = require("./abstractset");
var comparator_1 = require("./comparator");
var RedBlackTree_1 = require("./RedBlackTree");
var TreeSetIterator_1 = require("./treesetutil/TreeSetIterator");
var DescendingSubSet_1 = require("./treesetutil/DescendingSubSet");
var AscendingSubSet_1 = require("./treesetutil/AscendingSubSet");
var TreeSet = /** @class */ (function (_super) {
__extends(TreeSet, _super);
function TreeSet(param) {
var _this = _super.call(this) || this;
_this.m_Comparator = null;
if (comparator_1.isComparator(param)) {
_this.m_Comparator = param;
}
_this.m_RBTree = new RedBlackTree_1.RedBlackTree(_this.m_Comparator);
if (_this.m_Comparator === null && param !== null) {
var c = param;
_this.addAll(c);
}
return _this;
}
TreeSet.prototype.iterator = function () {
return new TreeSetIterator_1.TreeSetItetor(this);
};
TreeSet.prototype.size = function () {
return this.m_RBTree.size();
;
};
TreeSet.prototype.contains = function (e) {
return this.m_RBTree.contains(e);
};
TreeSet.prototype.first = function () {
var node = this.m_RBTree.getFirstNode();
return RedBlackTree_1.RedBlackTree.entryOrNull(node);
};
TreeSet.prototype.last = function () {
var node = this.m_RBTree.getLastNode();
return RedBlackTree_1.RedBlackTree.entryOrNull(node);
};
TreeSet.prototype.add = function (e) {
return this.m_RBTree.put(e) !== null;
};
TreeSet.prototype.ceiling = function (e) {
var node = this.m_RBTree.getCeilingNode(e);
return RedBlackTree_1.RedBlackTree.entryOrNull(node);
};
TreeSet.prototype.floor = function (e) {
var node = this.m_RBTree.getFloorNode(e);
return RedBlackTree_1.RedBlackTree.entryOrNull(node);
};
TreeSet.prototype.higher = function (e) {
var node = this.m_RBTree.getHigherNode(e);
return RedBlackTree_1.RedBlackTree.entryOrNull(node);
};
TreeSet.prototype.lower = function (e) {
var entry = this.m_RBTree.getLowerNode(e);
return RedBlackTree_1.RedBlackTree.entryOrNull(entry);
};
TreeSet.prototype.remove = function (e) {
var entry = this.m_RBTree.getRedBlackTreeNode(e);
if (entry === null) {
return false;
}
this.m_RBTree.deleteEntry(entry);
return true;
};
TreeSet.prototype.clear = function () {
this.m_RBTree.clear();
};
TreeSet.prototype.pollFirst = function () {
var node = this.m_RBTree.getFirstNode();
var result = RedBlackTree_1.RedBlackTree.entryOrNull(node);
if (node !== null) {
this.m_RBTree.deleteEntry(node);
}
return result;
};
TreeSet.prototype.pollLast = function () {
var node = this.m_RBTree.getLastNode();
var result = RedBlackTree_1.RedBlackTree.entryOrNull(node);
if (node !== null) {
this.m_RBTree.deleteEntry(node);
}
return result;
};
TreeSet.prototype.descendingSet = function () {
return new DescendingSubSet_1.DescendingSubSet(this, true, null, true, true, null, true);
};
TreeSet.prototype.descendingIterator = function () {
return new TreeSetIterator_1.DescendingTreeSetIterator(this);
};
TreeSet.prototype.subSet = function (fromElement, fromInclusiveOrToElement, param3, param4) {
var fromInclusive = true;
var toElement = null;
var toInclusive = false;
if (typeof fromInclusiveOrToElement === 'boolean') {
fromInclusive = fromInclusiveOrToElement;
toElement = param3;
toInclusive = param4;
}
else {
toElement = fromInclusiveOrToElement;
}
return new AscendingSubSet_1.AscendingSubSet(this, false, fromElement, fromInclusive, false, toElement, toInclusive);
};
TreeSet.prototype.headSet = function (toElement, inclusive) {
if (inclusive === undefined) {
inclusive = false;
}
return new AscendingSubSet_1.AscendingSubSet(this, true, null, true, false, toElement, inclusive);
};
TreeSet.prototype.tailSet = function (fromElement, inclusive) {
if (inclusive === undefined) {
inclusive = true;
}
return new AscendingSubSet_1.AscendingSubSet(this, false, fromElement, inclusive, true, null, true);
};
TreeSet.prototype.comparator = function () {
return this.m_Comparator;
};
TreeSet.prototype.compare = function (e1, e2) {
return this.m_RBTree.compareValues(e1, e2);
};
return TreeSet;
}(abstractset_1.AbstractSet));
exports.TreeSet = TreeSet;