草庐IT

sortedSet

全部标签

c# - 为什么 SortedSet<T>.GetViewBetween 不是 O(log N)?

在.NET4.0+中,类SortedSet有一个方法叫做GetViewBetween(l,r),它返回树部分的接口(interface)View,其中包含两个指定值之间的所有值。鉴于SortedSet实现为红黑树,我自然期望它运行在O(logN)时间。C++中类似的方法是std::set::lower_bound/upper_bound,在Java中是TreeSet.headSet/tailSet,它们是对数的。然而,事实并非如此。以下代码在32秒内运行,而等效的O(logN)GetViewBetween的版本将使此代码在1-2秒内运行。vars=newSortedSet();intn

c# - 为什么 SortedSet<T>.GetViewBetween 不是 O(log N)?

在.NET4.0+中,类SortedSet有一个方法叫做GetViewBetween(l,r),它返回树部分的接口(interface)View,其中包含两个指定值之间的所有值。鉴于SortedSet实现为红黑树,我自然期望它运行在O(logN)时间。C++中类似的方法是std::set::lower_bound/upper_bound,在Java中是TreeSet.headSet/tailSet,它们是对数的。然而,事实并非如此。以下代码在32秒内运行,而等效的O(logN)GetViewBetween的版本将使此代码在1-2秒内运行。vars=newSortedSet();intn

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

目录一、NoSQL和SQL区别二、认识Redis三、Redis的数据结构介绍四、Redis通用命令五、String类型六、key的格式七、Hash(散列)类型八、List类型九、Set类型十、SortedSet类型(可排序)一、NoSQL和SQL区别二、认识Redis🍀Redis诞生于2009年,全称是RemoteDictionaryServer,远程字典服务器,是一个基于内存的键值型NoSQL数据库🍀键值(key-value)型,value支持多种不同数据结构,功能丰富🍀单线程,每个命令具备原子性🍀低延迟,速度快(基于内存、IO多路复用、良好的编码)🍀支持数据持久化🍀支持主从集群、分片集群🍀

Python 等价于 java.util.SortedSet?

有人知道Python是否有与Java的SortedSet接口(interface)等效的接口(interface)吗?这就是我要查找的内容:假设我有一个foo类型的对象,并且我知道如何比较两个foo类型的对象以查看是否foo1是“大于”或“小于”foo2。我想要一种将许多foo类型的对象存储在列表L中的方法,这样每当我遍历列表L时,我都会得到对象按照我定义的比较方法依次排列。编辑:我想我可以在每次修改时使用字典或列表和sort(),但这是最好的方法吗? 最佳答案 看看BTrees.看起来你需要其中之一。据我了解,您需要支持将元素相对

Python 等价于 java.util.SortedSet?

有人知道Python是否有与Java的SortedSet接口(interface)等效的接口(interface)吗?这就是我要查找的内容:假设我有一个foo类型的对象,并且我知道如何比较两个foo类型的对象以查看是否foo1是“大于”或“小于”foo2。我想要一种将许多foo类型的对象存储在列表L中的方法,这样每当我遍历列表L时,我都会得到对象按照我定义的比较方法依次排列。编辑:我想我可以在每次修改时使用字典或列表和sort(),但这是最好的方法吗? 最佳答案 看看BTrees.看起来你需要其中之一。据我了解,您需要支持将元素相对

java - 如何在 TreeSet 中查找元素的索引?

我正在使用TreeSet我很想在集合中找到一个数字的索引。有没有一种很好的方法可以真正利用二叉树的O(log(n))复杂度?(如果没有,我应该怎么做,有谁知道为什么不呢?我很好奇为什么Java中会包含这样一个类而没有类似搜索功能的东西。) 最佳答案 我在TreeSet及其接口(interface)上闲逛了一会儿,发现获取元素索引的最佳方法是:set.headSet(element).size()headSet(element)返回小于其参数的元素的子TreeSet,因此该集合的大小将是相关元素的索引。确实是一个奇怪的解决方案。

java - 如何在 TreeSet 中查找元素的索引?

我正在使用TreeSet我很想在集合中找到一个数字的索引。有没有一种很好的方法可以真正利用二叉树的O(log(n))复杂度?(如果没有,我应该怎么做,有谁知道为什么不呢?我很好奇为什么Java中会包含这样一个类而没有类似搜索功能的东西。) 最佳答案 我在TreeSet及其接口(interface)上闲逛了一会儿,发现获取元素索引的最佳方法是:set.headSet(element).size()headSet(element)返回小于其参数的元素的子TreeSet,因此该集合的大小将是相关元素的索引。确实是一个奇怪的解决方案。

redis - 如何从 Redis 中的 SortedSet 获取上限分数(分数和成员)?

在Redis中,我想获取不在SortedSet中的分数的上限分数(和成员)。在Java中,有NavigableSet我们可以使用Eceiling(Ee)为了返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素则返回null。有没有办法在Redis中做同样的事情,也许使用SortedSets或其他数据结构?谢谢 最佳答案 您可以使用ZRANGEBYSCORE使用Lua脚本。想象一下下面的排序集:zaddtest1azaddtest2bzaddtest4c您有3个元素,得分分别为1、2、4,并且您想调用ceiling(3)。将以

c# - SortedSets.UnionAndStore 的 Redis Booksleeve 重量选项?

我正在使用Booksleeve和Redis构建警报机制。目前,我已经到了这样的地步:我有一个排序集,其中包含我要报告的项目(称为集A)和一个包含我想从警报中排除的成员的排序集(称为集B)。因为Redis中没有ZDIFF选项,我正在考虑对两个集合进行联合(称之为集合C),并且通过使用WEIGHT选项,我可以将集合B中的项目的分数降低到小于零。然后我可以从分数小于0的集合C中删除所有成员。但我没有看到在书套中应用WEIGHT的方法。我只是误解了它是如何工作的吗?我愿意接受其他处理问题的方法。 最佳答案 WEIGHTS当前在booksle

java - 如何获取 SortedSet 的最后 25 个元素?

在Java中,我有一个可能包含100,000个元素的SortedSet。我想高效优雅地获取最后25个元素。我有点不解。为了获得第一个25个元素,我将迭代并在第25个元素后停止。但我不知道如何以相反的顺序迭代。有什么想法吗?SortedSetsummaries=getSortedSet();//whatgoeshere:-( 最佳答案 您需要一个NavigableSet。否则,您将不得不低效地执行此操作,遍历整个SortedSet并将元素收集到一个Queue中,您将其修剪为25个元素。 关