整数区间内的哈希表键

2023-12-26

我不知道这是否可能,但我正在尝试创建一个哈希表,其中 Interval 是一个具有 2 个整数/长值、一个开始和一个结束的类,我想做这样的事情:

Hashtable<Interval, WhateverObject> test = new Hashtable<Interval, WhateverObject>();
test.put(new Interval(100, 200), new WhateverObject());
test.get(new Interval(150, 150)) // returns the new WhateverObject i created above because 150 is betwwen 100 and 200
test.get(new Interval(250, 250)) // doesn't find the value because there is no key that contains 250 in it's interval

所以基本上我想要的是 Interval 对象中一系列值之间的键给出相应的WhateverObject。我知道我必须重写间隔对象中的 equals() 和 hashcode() ,我认为主要问题是以某种方式让 100 到 200 之间的所有值(在这个特定示例中)给出相同的哈希值。

如果这可能的话有什么想法吗?

Thanks


无需重新发明轮子,使用NavigableMap http://docs.oracle.com/javase/6/docs/api/java/util/NavigableMap.html。示例代码:

final NavigableMap<Integer, String> map = new TreeMap<Integer, String>();
map.put(0, "Cry Baby");
map.put(6, "School Time");
map.put(16, "Got a car yet?");
map.put(21, "Tequila anyone?");
map.put(45, "Time to buy a corvette");

System.out.println(map.floorEntry(3).getValue());
System.out.println(map.floorEntry(10).getValue());
System.out.println(map.floorEntry(18).getValue());

Output:

Cry Baby
上学时间
有车了吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

整数区间内的哈希表键 的相关文章

随机推荐