UNPKG

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
"use strict"; 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;