java - Problems with implementing a sorted map -
i'm trying implement sorted hash map , have 1 problem. let me describe situation first, 1 understand what's going on.
i defined interface called map
. looks this
public interface map<k extends comparable<k>, v> { /*** state information ***/ public boolean isempty(); public int size(); public boolean contains(k key); /*** main operations ***/ public void insert(k key, v value); public v get(k key); public v delete(k key);
}
and defined class called sortedmap
implements interface. in class have nested static class called item
acts wrapper. here is
private static class item<k extends comparable<k>, v> implements comparable<item<k, v>> { private k key; private v value; item(k key, v value) { this.key = key; this.value = value; } @override public string tostring() { return string.format("%s=%s", key.tostring(), value.tostring()); } public int compareto(item<k, v> item) { if (key.compareto(item.key) > 0) return 1; else if (key.compareto(item.key) < 0) return -1; else return 0; } }
and store objects of class use red black bst underlying storage system.
private redblackbst<item<k, v>> storage = new redblackbst<>();
my red black bst can store 1 item (item<k, v>
in case) per node, stores 2 others.
public final class redblackbst<t extends comparable<t>> { private node<t> root; ......... // rest of }
as know map cannot have duplicate keys, in insert()
method first have check whether contains key , when delegate task red black bst storage.contains()
can't pass key only, have pass item
. problem arises. there way solve problem without creating yet red black tree might tree<k, v>
?
it's true map
, cannot have duplicate key don't have call contains()
in insert()
. in jdk, behavior of insert()
equivalent method - put()
if key exists it's replaced new key. can assume key unique , new , go on insert it. if somehow in place want store find key exists there can either replace corresponding value; or can throw exception, depends on what's desired behavior.
there sortedmap
interface in jdk , treemap
implementation based on red black tree.
Comments
Post a Comment