【发布时间】:2021-02-24 23:37:46
【问题描述】:
是否有满足这些功能的 Java Map 类:
-
它是一个具有
UnknownMap<Key, Object>形式的通用类,我计划在基于节点的应用程序中使用它,其中每个节点都存储在此映射中并对应于一个浮点值对象,如UnknownMap<Float, Node>。 -
它可以存储可以映射到相同浮点值的对象,例如:
UnknownMap<Float, String> map = new UnknownMap<Float, String>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(1, "d");
System.out.println(map);
将打印出:{1="a", 1="d", 2="b", 3="c"} 而不是:{1="d", 2="b", 3="c"}。
-
它有一个名为
subMap的方法,该方法返回一个包含键范围内所有节点的映射,类似于TreeMap.subMap。 -
它必须对浮点键值执行二进制搜索以检索正确的对象,而不是遍历整个集合。它需要快速,因为可能会有数千个甚至数百万个节点。
这样的类是否存在,或者我必须从头开始编写一个?
谢谢。
【问题讨论】:
-
听起来你在寻找 Guava 的
TreeMultimap。 -
否 - 因为根据定义,
Map不能有重复的键。如果您的数据结构具有灵活性,那么您可以使用几个不同的Map实现来解决这个问题。 -
糟糕的标题,缺乏细节。你的问题不清楚。我猜您想将键映射到值集合而不是单个值。如果是这样,这个问题已经在 Stack Overflow 上解决了很多次。
标签: java dictionary hashtable