问题标签 [ordered-set]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 集合与有序集合
你能给我一个例子什么时候使用OrderedSet
而不是Set
?我已经运行了几个测试,甚至immutable-js 文档说
Set 的迭代顺序是不确定的,但是是稳定的
内部的元素顺序似乎Set
总是与添加元素的顺序相同。这似乎是该OrderedSet
结构的唯一好处:
一种 Set 类型,它具有额外的保证值的迭代顺序将是它们被添加的顺序。
java - 唯一包含键但在不同字段上排序的集合
我正在寻找一个 Java 集合,可能在标准库中,它能够收集以下结构:
并具有以下属性:
- 只允许一个具有相同密钥的项目(如一组)
- 在最大 O(logn) 中插入、删除、检查是否存在
- 按分数排序的遍历,在最大 O(logn) 中找到下一个
据我了解,标准 OrderedSet 必须具有与 equals() 接口一致的可比较接口,但这不是我的情况,因为具有不同键的两个项目可能具有相同的分数。
事实上,我注意到 TreeSet 使用返回 0 的比较器来检查项目是否已经存在。
有什么建议吗?
rust - 如何使用运行时定义的比较器定义有序 Map/Set?
这类似于如何在 BTreeSet 中使用自定义比较器函数?但是在我的情况下,直到运行时我才会知道排序标准。可能的标准是广泛的,不能硬编码(想想像按目标距离排序或按有效负载中的特定字节或其组合排序)。创建地图/集后,排序标准不会改变。
我看到的唯一选择是:
- 使用 a
Vec
,但 log(n) 插入和删除至关重要 - 用排序标准(直接或间接)包装每个元素,但这似乎很浪费
这对于标准 C++ 容器std::map
/是可能的,但对于 Rust 的/std::set
似乎是不可能的。标准库或另一个板条箱中是否有替代方案可以做到这一点?还是我必须自己实施?BTreeMap
BTreeSet
我的用例是一个类似数据库的系统,其中集合中的元素由模式定义,例如:
但由于模式是用户在运行时定义的,因此元素存储在一组字节 ( BTreeSet<Vec<u8>>
) 中。同样,元素的顺序是用户定义的。所以我会给的比较器BTreeSet
看起来像|a, b| schema.cmp(a, b)
。硬编码,上面的例子可能看起来像:
select - Erlang Mnesia select on an ordered_set 是否给出了 Erlang Term 顺序的列表?
在文档中,我不清楚我是否需要按照 next 或 foldl 的顺序进行迭代(提到 foldr 与ordered_set 的顺序相反,因此推测 foldl 的顺序相同)或者我是否可以使用 select 并依赖它被排序(假设 ordered_set 表)
python - 在执行排序条件时查找两个列表或数据框之间的交集
我有两个列表(来自两个单独的 pandas 数据框的列),并且希望在保留顺序或基于条件排序的同时找到两个列表的交集。考虑以下示例:
变量 answer 产生重叠列,但不保留顺序。有没有办法对解决方案进行排序,使得答案产生:
即首先按月(“MO”)和整数对相交列表进行排序,然后按年(“YR”)及其整数排序?
或者,是否有一种 pandas 方法可以通过两个重叠列的数据帧(保留或声明顺序)获得相同的结果?