我有一个用例,如果一个数字位于0-10之间它应该返回0,如果它位于11-20之间它应该返回1等
0 => 0-3, (0 and 3 are inclusive)
1 => 4-15, (4 and 15 are inclusive)
2 => 16-40, (16 and 40 are inclusive)
3 => 41-88, (41 and 88 are inclusive)
5 => 89-300 (89 and 300 are inclusive)
Run Code Online (Sandbox Code Playgroud)
我在想如何实现并思考java地图,但它不允许范围搜索
我对这样的事感兴趣,我有一个功能
int foo() {
}
Run Code Online (Sandbox Code Playgroud)
如果foo返回5,因为它介于0到10之间,我会使用0,如果foo返回25则会使用2.
有任何想法吗
编辑:实际上范围并不像0-10,11-20那么简单.我希望能够进行范围搜索.对此感到抱歉.根据我添加了正确示例的查询,数字是连续的
我正在将我的Java代码库迁移到纯Scala,我仍然坚持使用这一段代码.我有一个让我们的IntervalMap即数据结构的实现你有效地映射范围[from,to]到values了哪里set,delete和get操作都O(log n)(从IntervalTree或线段树略有不同).
这段代码使用Java java.util.TreeMaps,在迁移到Scala时,我遇到了两个大问题:
Scala没有mutable.TreeMap- 我决定通过使用mutable.TreeSet(奇怪的是Scala mutable.TreeSet但没有mutable.TreeMap)来存储密钥并将值存储在辅助中mutable.Map.这是一个不愉快的黑客,但还有更好的方法吗?
接下来的问题是Scala的mutable.TreeSet没有类似的java.util.TreeSet的ceilingKey,floorEntry,pollFirst,pollLast这些都是O(log n)在Java操作.
那么,我怎样才能最好地将我的代码迁移到Scala?这些情况下的最佳做法是什么?我真的不想编写自己的树实现.有没有更惯用的Scala编写IntervalMaps的方式,我不知道?或者那里有一些有信誉的图书馆?或者Scala只是简单地用它的gimped TreeSet和不存在的TreeMaps来吸吮.当然,我可以TreeMap在Scala中使用Java ,但这很丑陋,我失去了所有不错的Scala集合功能,我不妨使用Java.
这是我目前的Java代码:https://gist.github.com/pathikrit/5574521
我试图找到一个数据结构,从一系列值中获取特定值并将其映射到一个键.
例如,我有以下条件:
我的值为5,我想将其映射到一个键.所以基于上述条件,我应该将它映射到B.
Java中是否有任何人可以向我推荐解决问题的数据结构?
目前我使用的哈希表只能将值映射到键.我尝试将值范围映射到哈希表中存在的特定值.但是,我陷入了将值范围映射到特定值的问题.所以现在我试图用另一种方法将值的范围映射到键.有谁知道如何解决这个问题?
编辑:
感谢Martin Ellis,我决定使用TreeMap来解决这个问题.
我不知道这是否可行,但我正在尝试制作一个Hashtable,其中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
Run Code Online (Sandbox Code Playgroud)
基本上我想要的是Interval对象中一系列值之间的键给出对应的WhateverObject.我知道我必须在区间对象中重写equals()和hashcode(),我认为主要问题是以某种方式将所有值介于100和200之间(在此特定示例中)以给出相同的散列.
任何想法,如果这是可能的?
谢谢
可能重复:
Java是否存在开放式间隔实现?
我是Java的新手,我想知道什么是最好的数据结构,我如何在我的情况下搜索数据结构:我有int间隔,例如:10-100,200-500,1000-5000和for每个区间我有一个值1,2,3,4.我想知道如何在数据结构中保存所有这些区间及其值,以及如何搜索该数据结构以返回特定区间的值.例如.如果我搜索15,即在10-100区间,我想返回1.
谢谢