Tag: 数据结构

如何在.NET中克隆字典?

我知道我们宁愿使用字典而不使用哈希表。 我找不到克隆字典的方法。 即使将它投射到ICollection上,我也会得到SyncRoot,我知道这也是令人不悦的。 现在我正忙于改变这一点。 我是否有正确的假设,没有办法以通用的方式实现任何types的克隆,这就是为什么字典不支持克隆?

将Clojure数据结构转换为Java集合

将数据结构转换为Java集合的Clojure惯用方法是什么,具体如下: []到一个java.util.ArrayList {} java.util.HashMap到java.util.HashMap #{}到一个java.util.HashSet ()到一个java.util.LinkedList 有一个clojure.contrib库来做到这一点? 用例 :为了将Clojure放到我的组织中,我正在考虑为Clojure中的所有Java REST服务器编写一个unit testing套件。 我已经在Scala中编写了部分套件,但是认为Clojure可能会更好,因为macros支持会减less很多样板代码(我需要testing几十个类似的REST服务调用)。 我使用EasyMock来模拟数据库连接(有没有更好的方法?),我的模拟方法需要返回java.util.List<java.util.Map<String, Object>>项目(表示数据库行集)到调用者。 我会传递一个[{ "first_name" "Joe" "last_name" "Smith" "date_of_birth" (date "1960-06-13") … } …]结构到我的模拟并将其转换为所需的Java集合,以便它可以以预期的格式返回给调用者。

dynamic地将数据添加到JavaScript地图

有没有一种方法可以dynamic地将数据添加到JavaScript中的地图。 map.put(key,value) ? 我正在使用JavaScript的YUI库,但没有看到有什么支持这一点。

纯文本编辑器的function数据结构

文本编辑器有什么好的纯function数据结构? 我希望能够将单个字符插入到文本中,并以可接受的效率从文本中删除单个字符,并希望能够保留旧版本,以便轻松地撤消更改。 我应该只使用一个string列表,并重新使用从版本到版本不变的行?

用于实施UNDO和REDO选项的数据结构

我想实施UNDO和REDO选项(就像我们在MS word中看到的那样)。 你能build议我一个数据结构吗,我该如何实现呢?

当指向前一个节点的指针不可用时,从单个链接列表中删除中间节点

是否有可能删除单链表中的一个中间节点,当我们唯一可用的信息是指向要删除的节点的指针,而不是指向前一个节点的指针?删除之后,前一个节点应该指向下一个节点删除节点。

在C ++中使用密钥更新使用最小优先级队列的最简单的方法

有时候在编程竞赛等时候,我们需要一个简单的最小优先级队列的实现,用reduce-key来实现Dijkstraalgorithm等等。我经常使用set <pair <key_value,ID>和一个数组(映射ID – > key_value )一起来实现这一点。 将元素添加到集合需要O(log(N))时间。 要从N个元素中构build优先级队列,我们​​只需将它们逐个添加到集合中。 这总共需要O(N log(N))时间。 具有min key_value的元素只是该集合的第一个元素。 探测最小的元素需要O(1)次。 删除它需要O(log(N))时间。 为了testing一些ID = k是否在集合中,我们首先在数组中查找它的key_value = v_k,然后search集合中的元素(v_k,k)。 这需要O(log(N))时间。 为了将一些ID = k的key_value从v_k改为v_k',我们首先在数组中查找它的key_value = v_k,然后search该集合中的元素(v_k,k)。 接下来,我们从集合中删除该元素,然后将元素(v_k',k)插入集合中。 然后,我们也更新数组。 这需要O(log(N))时间。 虽然上述方法可行,但大多数教科书通常build议使用二进制堆实现优先级队列,因为构build二进制堆的时间只是O(N)。 我听说在C ++的STL中有一个使用二进制堆的内置优先级队列数据结构。 但是,我不知道如何更新该数据结构的key_value。 在C ++中使用密钥更新来使用最小优先级队列的最简单和最有效的方法是什么?

在Java中返回一对值的最好方法是什么?

这是一个小问题,因为我可以轻松地组成一对class来完成这项工作。 我不想这样做,我觉得应该有一个简单的,内置的,类似于java的方式来返回两个值。 你们是最好的,最简单的方法呢? arrays? 其他一些数据结构?

为什么使用二进制search,如果有三元search?

我最近听说三元search,我们把一个数组分成3个部分进行比较。 这里会有两个比较,但它将数组减less到n / 3。 为什么人们不用这么多?

我应该如何以高效的内存方式将string键映射到Java中的值?

我正在寻找一种方法来存储一个string – >诠释映射。 当然,HashMap是一个最明显的解决scheme,但由于内存受限,需要存储200万对,7个字符长的键,我需要一些内存有效的,检索速度是次要参数。 目前我正沿着以下路线走: List<Tuple<String, int>> list = new ArrayList<Tuple<String, int>>(); list.add(…); // load from file Collections.sort(list); 然后进行检索: Collections.binarySearch(list, key); // log(n), acceptable 我是否应该去一个自定义树(每个节点单个字符,每个叶子的结果),还是有一个现有的集合,适合这个很好? string实际上是连续的(英国邮政编码,它们差别不大),所以我期望在这里节省内存。