Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
需要高性能的Scala/Java集合_Java_Scala_Collections_Guava_Scala Collections - Fatal编程技术网

需要高性能的Scala/Java集合

需要高性能的Scala/Java集合,java,scala,collections,guava,scala-collections,Java,Scala,Collections,Guava,Scala Collections,我正在寻找一个Scala(或Java/Guava)集合,它支持O(1)访问(最好是删除)它的最小元素,以及O(logn)插入和删除任意元素 想法?在ArrayList的支持下创建自己的收藏。它需要额外的字段最小元素和最小元素的位置。如果元素是新的最小值,则在添加该元素时更新这些字段。创建自己的由ArrayList支持的集合。它需要额外的字段最小元素和最小元素的位置。如果元素是新的最小值,则在添加该元素时更新这些字段。: 实施说明:此实施为排队和退队方法(offer、poll、remove()和a

我正在寻找一个Scala(或Java/Guava)集合,它支持O(1)访问(最好是删除)它的最小元素,以及O(logn)插入和删除任意元素


想法?

在ArrayList的支持下创建自己的收藏。它需要额外的字段最小元素和最小元素的位置。如果元素是新的最小值,则在添加该元素时更新这些字段。

创建自己的由ArrayList支持的集合。它需要额外的字段最小元素和最小元素的位置。如果元素是新的最小值,则在添加该元素时更新这些字段。

:

实施说明:此实施为排队和退队方法(
offer
poll
remove()
add
)提供了O(log(n))时间;
删除(对象)
包含(对象)
方法的线性时间;检索方法的固定时间(
peek
元素
、和
大小

这个班是学校的一员

:

实施说明:此实施为排队和退队方法(
offer
poll
remove()
add
)提供了O(log(n))时间;
删除(对象)
包含(对象)
方法的线性时间;检索方法的固定时间(
peek
元素
、和
大小

这个班是学校的一员


这听起来像是你可以用一个指向最小元素的额外指针包装一个
TreeSet
,这样在每次插入或删除后(已经是O(logn))你都会更新当前的最小元素(O(logn)来查询),您正在寻找
PriorityQueue
:考虑Scala集合的性能特征时,这是一个很好的起点。@jwvh No
PriorityQueue
。。。羞耻;)@迪玛,我说过这只是一个开始。该页面可能需要一个很好的更新。这听起来像是你可以用一个指向最小元素的额外指针包装一个
TreeSet
,这样在每次插入或删除(已经是O(logn))之后,你都可以更新当前的最小元素(O(logn))来查询。我想,您正在寻找
PriorityQueue
:考虑Scala集合的性能特征时,这是一个很好的起点。@jwvh No
PriorityQueue
。。。羞耻;)@迪玛,我说过这只是一个开始。该页面可能需要一个很好的更新。我考虑了PriorityQueue,但由于备份存储是使用堆实现的,因此无法获得我想要的O(logn)
remove(Object)
。我考虑了PriorityQueue,但因为备份存储是使用堆实现的,所以无法获得O(logn)
remove(Object)
我想要的。