jdk.imports['java.util.AbstractMap'].load = async () => { let AbstractCollection = await jdk.import('java.util.AbstractCollection'); let Set = await jdk.import('java.util.Set'); class AbstractMap { constructor(co) { this.map = co || {}; class SimpleEntry { constructor(key, val) { this.key = key; this.val = val; } getKey() { return this.key; } getValue() { return this.val; } toString() { return this.key + '=' + this.val; } } this.SimpleEntry = SimpleEntry; } clear() { this.map = {}; } containsKey(key) { return this.map.hasOwnProperty(key); } containsValue(val) { return Object.values(this.map).find((x) => x == val) ? true : false; } get(key) { return this.map[key] || null; } isEmpty() { return Object.keys(this.map).length == 0; } entrySet() { let set = new Set(); for (let key in this.map) { set.add(new this.SimpleEntry(key, this.map[key])); } return set; } put(key, value) { const previous_val = this.map[key]; this.map[key] = value; return previous_val || null; } remove(key) { if (!this.map[key]) return null; const val = this.map[key]; delete this.map[key]; return val; } values() { const co = new AbstractCollection(Object.values(this.map)); return co; } size() { return Object.keys(this.map).length; } } jdk.java.util.AbstractMap = AbstractMap; };