Java排序数据结构,允许对数时间删除范围内的值
我想知道Java内置库中是否有一个接口实现了一个有序的数据结构,并支持在一定范围内删除。例如,如果我们调用数据结构S(比如整数),我希望能够搜索并删除S的子集Q,这样Q由O(| Q | log | S |)时间内[start,end]范围内S中的所有元素组成 <>我知道C++中有一个擦除方法给SET接口,但是它看起来不像java的树集有类似的东西。有人能帮忙吗?谢谢 返回一个视图,然后可以Java排序数据结构,允许对数时间删除范围内的值,java,algorithm,data-structures,set,Java,Algorithm,Data Structures,Set,我想知道Java内置库中是否有一个接口实现了一个有序的数据结构,并支持在一定范围内删除。例如,如果我们调用数据结构S(比如整数),我希望能够搜索并删除S的子集Q,这样Q由O(| Q | log | S |)时间内[start,end]范围内S中的所有元素组成 我知道C++中有一个擦除方法给SET接口,但是它看起来不像java的树集有类似的东西。有人能帮忙吗?谢谢 返回一个视图,然后可以clear() 例如: TreeSet<String> set = new TreeSet<&
clear()
例如:
TreeSet<String> set = new TreeSet<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(set); // [A, B, C, D, E]
set.subSet("B", "D").clear(); // Inclusive of B, exclusive of D.
System.out.println(set); // [A, D, E]
TreeSet set=newtreeset(Arrays.asList(“A”、“B”、“C”、“D”、“E”));
系统输出打印项次(设置);//[A、B、C、D、E]
set.subSet(“B”,“D”).clear();//包括B,不包括D。
系统输出打印项次(设置);//[A、D、E]
(的文档描述了如何分别将子集
的边界修改为独占和包含,至少对于字符串
)。返回一个视图,然后可以清除()
例如:
TreeSet<String> set = new TreeSet<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(set); // [A, B, C, D, E]
set.subSet("B", "D").clear(); // Inclusive of B, exclusive of D.
System.out.println(set); // [A, D, E]
TreeSet set=newtreeset(Arrays.asList(“A”、“B”、“C”、“D”、“E”));
系统输出打印项次(设置);//[A、B、C、D、E]
set.subSet(“B”,“D”).clear();//包括B,不包括D。
系统输出打印项次(设置);//[A、D、E]
(的文档描述了如何分别将子集
的边界修改为独占和包含,至少对于字符串
)。我不知道有任何接口/库,但您可以尝试使用类似直方图的结构
例如,假设我们知道我们的结构只包含min
和max
之间的整数。然后我们可以简单地在下面的庄园中制作一个数组
int[]hist=newint[max-min+1];
如果我们想在柱状图中添加一个数字i
,我们可以简单地
hist[i-min]+;
数组中的每个索引表示预定义范围内的一个数字。数组中的每个值表示该范围内某个数字的出现次数
这种结构非常强大,因为它允许恒定时间的添加、删除和搜索
假设我们要删除包含范围Q=[s,e]
中的所有元素。我们可以运行以下线性循环
for(int i=s;i我不知道有任何接口/库,但您可以尝试使用类似直方图的结构
例如,假设我们知道我们的结构只包含min
和max
之间的整数
int[]hist=newint[max-min+1];
如果我们想在柱状图中添加一个数字i
,我们可以简单地
hist[i-min]+;
数组中的每个索引表示预定义范围内的一个数字。数组中的每个值表示该范围内某个数字的出现次数
这种结构非常强大,因为它允许恒定时间的添加、删除和搜索
假设我们要删除包含范围Q=[s,e]
中的所有元素
for(int i=s;i