Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用什么数据类型来匹配间隔?_Java_Data Structures - Fatal编程技术网

在Java中使用什么数据类型来匹配间隔?

在Java中使用什么数据类型来匹配间隔?,java,data-structures,Java,Data Structures,我有一个实现非重叠范围的对象列表,例如: 1 to 10 11 to 20 21 to 50 51 to 100 它们提供min()和max()来检索这些值 我需要一个数据存储来轻松检索正确的对象,给定一个必须在其间隔内的值 我能想到的最简单的方法是创建一个有序的arraylist并简单地遍历它,直到找到正确的间隔。所以在这种情况下,查找是在O(N)中完成的 标准Java库中是否有更有效的数据结构来执行此任务?您可以尝试使用NavigableMap,该方法在以下答案中解释:,“无漏洞”方法 使

我有一个实现非重叠范围的对象列表,例如:

1 to 10
11 to 20
21 to 50
51 to 100
它们提供
min()
max()
来检索这些值

我需要一个数据存储来轻松检索正确的对象,给定一个必须在其间隔内的值

我能想到的最简单的方法是创建一个有序的arraylist并简单地遍历它,直到找到正确的间隔。所以在这种情况下,查找是在O(N)中完成的


标准Java库中是否有更有效的数据结构来执行此任务?

您可以尝试使用
NavigableMap
,该方法在以下答案中解释:,“无漏洞”方法

使用TreeMap的示例实现:

// Create TreeMap
NavigableMap<Integer, MyInterval> map = new TreeMap<>();

// Putting values
map.put(interval1.min(), myInterval);
map.put(interval2.min(), myInterval);

// Retrieving values
int value = 15;
MyInterval interval = map.floorEntry(value).getValue();

// Check if value is smaller than max()
if (value <= interval.max())
    return interval;
return null;
//创建树映射
NavigableMap=newtreemap();
//价值观
map.put(interval1.min(),myInterval);
map.put(interval2.min(),myInterval);
//检索值
整数值=15;
MyInterval interval=map.floorEntry(value).getValue();
//检查值是否小于max()

if(value无需重新设计轮子,提供了、和类。有关详细信息,请参阅文档。

二进制搜索需要O(log n)是的,但是java中是否有一个标准的数据结构可以满足这个要求?您的对象是否实现了可比较的接口,在该字段上进行比较?您的对象是什么样子的?我自己维护该对象的类,所以我可以添加任何我想添加的内容?虽然这可能是一个很好的解决方案,但我要求提供一个标准的java数据结构.NavigableMap也非常有用,但将自己限制在“标准”数据结构是一个不必要的障碍。没有番石榴,现代Java代码库是不完整的(番石榴中的大部分都进入了Java 8).我正在定制一个ERP系统。添加额外的库对我来说不是件小事,这就是为什么我只有在必要时才会求助于此。