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.

247 lines (246 loc) 10.2 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 abstractmap_1 = require("./abstractmap"); var comparator_1 = require("./comparator"); var map_1 = require("./map"); var TreeMapKeyIterator_1 = require("./treemaputil/TreeMapKeyIterator"); var TreeMapDescendingKeyIterator_1 = require("./treemaputil/TreeMapDescendingKeyIterator"); var TreeMapKeySet_1 = require("./treemaputil/TreeMapKeySet"); var objects_1 = require("./objects"); var TreeMapValues_1 = require("./treemaputil/TreeMapValues"); var TreeMapEntrySet_1 = require("./treemaputil/TreeMapEntrySet"); var TreeMapEntry_1 = require("./treemaputil/TreeMapEntry"); var RedBlackTree_1 = require("./RedBlackTree"); var DescendingSubMap_1 = require("./treemaputil/DescendingSubMap"); var TreeMapEntryComparator = /** @class */ (function () { function TreeMapEntryComparator(comparator) { this.comparator = comparator; } TreeMapEntryComparator.prototype.compare = function (entry1, entry2) { if (this.comparator !== null) { return this.comparator.compare(entry1.getKey(), entry2.getKey()); } var k1 = entry1.getKey(); return k1.compareTo(entry2.getKey()); }; return TreeMapEntryComparator; }()); var TreeMap = /** @class */ (function (_super) { __extends(TreeMap, _super); function TreeMap(param) { var _this = _super.call(this) || this; _this.m_NavigableKeySet = null; _this.m_Values = null; var comparator = null; if (comparator_1.isComparator(param)) { comparator = new TreeMapEntryComparator(param); } _this.m_Comparator = comparator; _this.m_RedBlackTree = new RedBlackTree_1.RedBlackTree(comparator); if (map_1.isMap(param)) { _this.putAll(param); } return _this; } Object.defineProperty(TreeMap.prototype, "modCount", { get: function () { return this.m_RedBlackTree.modCount; }, enumerable: true, configurable: true }); TreeMap.prototype.size = function () { return this.m_RedBlackTree.size(); }; TreeMap.prototype.containsKey = function (key) { var entry = new TreeMapEntry_1.TreeMapEntry(key, null); return this.m_RedBlackTree.getRedBlackTreeNode(entry) !== null; }; TreeMap.prototype.containsValue = function (value) { var entry = this.m_RedBlackTree.getFirstNode(); ; while (entry !== null) { if (objects_1.Objects.equals(value, entry.value)) { return true; } entry = this.m_RedBlackTree.successor(entry); } }; TreeMap.prototype.get = function (key) { var node = this.m_RedBlackTree.getRedBlackTreeNode(new TreeMapEntry_1.TreeMapEntry(key, null)); var entry = RedBlackTree_1.RedBlackTree.entryOrNull(node); return TreeMap.valueOrNull(entry); }; TreeMap.prototype.comparator = function () { return this.m_Comparator; }; TreeMap.prototype.firstKey = function () { var firstNode = this.m_RedBlackTree.getFirstNode(); return TreeMap.keyOrNull(RedBlackTree_1.RedBlackTree.entryOrNull(firstNode)); }; TreeMap.prototype.lastKey = function () { var lastNode = this.m_RedBlackTree.getLastNode(); return TreeMap.keyOrNull(RedBlackTree_1.RedBlackTree.entryOrNull(lastNode)); }; TreeMap.prototype.put = function (key, value) { var result = this.m_RedBlackTree.put(new TreeMapEntry_1.TreeMapEntry(key, value)); return result.value; }; TreeMap.prototype.remove = function (key) { var entry = this.m_RedBlackTree.remove(new TreeMapEntry_1.TreeMapEntry(key, null)); return TreeMap.valueOrNull(entry); }; TreeMap.prototype.clear = function () { this.m_RedBlackTree.clear(); }; TreeMap.prototype.firstEntry = function () { var node = this.m_RedBlackTree.getFirstNode(); return RedBlackTree_1.RedBlackTree.entryOrNull(node); }; TreeMap.prototype.lastEntry = function () { var node = this.m_RedBlackTree.getLastNode(); return RedBlackTree_1.RedBlackTree.entryOrNull(node); }; TreeMap.prototype.pollFirstEntry = function () { var node = this.m_RedBlackTree.getFirstNode(); var result = this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(node)); if (node !== null) { this.m_RedBlackTree.deleteEntry(node); } return result; }; TreeMap.prototype.pollLastEntry = function () { var node = this.m_RedBlackTree.getLastNode(); var result = this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(node)); if (node !== null) { this.m_RedBlackTree.deleteEntry(node); } return result; }; TreeMap.prototype.lowerEntry = function (key) { var node = this.m_RedBlackTree.getLowerNode(new TreeMapEntry_1.TreeMapEntry(key, null)); return this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(node)); }; TreeMap.prototype.lowerKey = function (key) { return TreeMap.keyOrNull(this.lowerEntry(key)); }; TreeMap.prototype.floorEntry = function (key) { var node = this.m_RedBlackTree.getFloorNode(new TreeMapEntry_1.TreeMapEntry(key, null)); return this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(node)); }; TreeMap.prototype.floorKey = function (key) { return TreeMap.keyOrNull(this.floorEntry(key)); }; TreeMap.prototype.ceilingEntry = function (key) { var node = this.m_RedBlackTree.getCeilingNode(new TreeMapEntry_1.TreeMapEntry(key, null)); return this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(node)); }; TreeMap.prototype.ceilingKey = function (key) { return TreeMap.keyOrNull(this.ceilingEntry(key)); }; TreeMap.prototype.higherEntry = function (key) { var higherNode = this.m_RedBlackTree.getHigherNode(new TreeMapEntry_1.TreeMapEntry(key, null)); return this.exportEntry(RedBlackTree_1.RedBlackTree.entryOrNull(higherNode)); }; TreeMap.prototype.higherKey = function (key) { return TreeMap.keyOrNull(this.higherEntry(key)); }; TreeMap.prototype.keySet = function () { return this.navigableKeySet(); }; TreeMap.prototype.navigableKeySet = function () { if (this.m_NavigableKeySet === null) { this.m_NavigableKeySet = new TreeMapKeySet_1.TreeMapKeySet(this); } return this.m_NavigableKeySet; }; TreeMap.prototype.descendingKeySet = function () { return this.descendingMap().navigableKeySet(); }; TreeMap.prototype.values = function () { if (this.m_Values === null) { this.m_Values = new TreeMapValues_1.TreeMapValues(this.m_RedBlackTree); } return this.m_Values; }; TreeMap.prototype.entrySet = function () { return new TreeMapEntrySet_1.TreeMapEntrySet(this.m_RedBlackTree); }; TreeMap.prototype.descendingMap = function () { return new DescendingSubMap_1.DescendingSubMap(this, true, null, true, true, null, true); }; TreeMap.prototype.subMap = function (fromKey, toKeyOrFromInclusive, toKey, toInclusive) { return null; }; TreeMap.prototype.headMap = function (toKey, toInclusive) { return null; }; TreeMap.prototype.tailMap = function (fromKey, fromInclusive) { return null; }; TreeMap.prototype.replace = function (key, newValue, paramOldValue) { var node = this.m_RedBlackTree.getRedBlackTreeNode(new TreeMapEntry_1.TreeMapEntry(key, null)); var entry = RedBlackTree_1.RedBlackTree.entryOrNull(node); if (entry === null) { return false; } var oldValue = entry.getValue(); var povany = paramOldValue; if (paramOldValue === undefined) { if (entry !== null) { entry.setValue(newValue); return oldValue; } else { return null; } } else if (povany.equals(oldValue)) { entry.setValue(newValue); return true; } else { return false; } }; TreeMap.prototype.compareKeys = function (k1, k2) { return this.m_RedBlackTree.compareValues(new TreeMapEntry_1.TreeMapEntry(k1, null), new TreeMapEntry_1.TreeMapEntry(k1, null)); }; TreeMap.prototype.exportEntry = function (entry) { if (entry === undefined || entry === null) { return null; } return new abstractmap_1.ImmutableMapEntry(entry); }; TreeMap.keyOrNull = function (entry) { return entry === null ? null : entry.getKey(); }; TreeMap.valueOrNull = function (entry) { return entry === null ? null : entry.getValue(); }; TreeMap.prototype.keyIterator = function () { return new TreeMapKeyIterator_1.TreeMapKeyIterator(this.m_RedBlackTree.getFirstNode(), this.m_RedBlackTree); }; TreeMap.prototype.descendingKeyIterator = function () { return new TreeMapDescendingKeyIterator_1.TreeMapDescendingKeyIterator(this.m_RedBlackTree.getLastNode(), this.m_RedBlackTree); }; TreeMap.prototype.successor = function (key) { var entry = this.m_RedBlackTree.getSuccessor(new TreeMapEntry_1.TreeMapEntry(key, null)); return entry; }; return TreeMap; }(abstractmap_1.AbstractMap)); exports.TreeMap = TreeMap;