问题标签 [data-structures]
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.
java - Java:数组和向量
我习惯于使用 PHP,但最近我一直在使用 Java,试图弄清楚这一点让我很头疼。我想用 Java 保存这个表示:
有没有一种干净的方法(即没有脏代码)在 Java 中保存这个东西?笔记; 我想使用字符串作为数组索引(在第一维中),我不知道数组的确定大小..
java - 树(有向无环图)实现
我需要一个像这样的树/有向无环图实现:
- 没有任何类型的排序。
- 这
TreeNode
只是键和可能值的包装器(节点不必设置值)。 - 我需要链接到父母和孩子。
标准 API 或 Commons 等中是否有任何东西可以为我做到这一点?
我不介意自己写(我当然不会要求你们这样做)我只是不想重新发明轮子。
data-structures - 从内到外了解最有用的数据结构是什么?
我有兴趣找出人们认为在编程中最有用的数据结构。你发现自己一直在使用什么数据结构?
这篇文章的答案应该可以帮助有兴趣为他们的问题找到有用的数据结构的新程序员。答案可能应该包括数据结构、关于它或相关链接的信息、它的使用情况以及为什么它是解决这个问题的好选择(例如理想的计算复杂性、简单性和理解等)
每个答案应该只与一个数据结构有关。
感谢人们可以分享的任何智慧和经验。
c# - 如何移动数组中的项目?
我有一系列时间敏感的项目。一段时间后,最后一个项目需要脱落,并在开始时放置一个新项目。
做这个的最好方式是什么?
c++ - 磁盘支持的 STL 容器类?
我喜欢使用 STL 开发算法,但是,我经常遇到这个问题,即我的数据集对于堆来说太大了。
我一直在寻找 STL 容器和磁盘支持的算法的替代品,即存储在磁盘上而不是堆上的数据结构。
一位朋友最近向我指出了stxxl。在我过多参与之前......我应该考虑是否有其他可用的磁盘支持的 STL 替代品?
注意:我对持久性或嵌入式数据库不感兴趣。请不要提及 boost::serialization、POST++、关系模板库、Berkeley DB、sqlite 等。我知道这些项目并在它们适合我的目的时使用它们。
更新:有几个人提到了内存映射文件和使用自定义分配器,顺便说一句,这是很好的建议,但我会指出他们在这里的讨论中,大卫亚伯拉罕建议磁盘支持的容器需要自定义迭代器。这意味着自定义分配器方法不太可能奏效。
.net - 为什么 .Net 字典中的条目要另外排序?
我刚刚看到这种行为,我对此感到有点惊讶......
如果我将 3 或 4 个元素添加到字典,然后执行“For Each”以获取所有键,它们会按照我添加它们的顺序出现。
这让我感到惊讶的原因是 Dictionary 应该是内部的 HashTable,所以我希望事情以任何顺序出现(按键的哈希排序,对吗?)
我在这里想念什么?这是我可以指望的行为吗?
编辑:好的,我已经想到了可能发生这种情况的许多原因(例如条目的单独列表,这是否是巧合等)。我的问题是,有人知道这到底是如何工作的吗?
c# - 什么是 C++ std::pair 的 C# 模拟?
我很感兴趣:C#std::pair
在 C++ 中的类比是什么?我找到了System.Web.UI.Pair
类,但我更喜欢基于模板的东西。
谢谢!
arrays - 数组与链表
为什么有人要在数组上使用链表?
毫无疑问,对链表进行编码比使用数组需要更多的工作,而且人们可能想知道什么是额外努力的合理性。
我认为在链表中插入新元素是微不足道的,但它是数组中的一项主要工作。使用链表存储一组数据与将其存储在数组中相比,还有其他优势吗?
这个问题不是这个问题的重复,因为另一个问题是专门询问一个特定的 Java 类,而这个问题是关于一般数据结构的。
serialization - 为内存数据结构增加持久性
您可以采用哪些流行技术来增加内存数据结构的持久性(即,如果进程崩溃,您可以保留之前对该数据结构执行的所有操作?
如果我的数据结构只涉及一个元组列表,那么我只需将它们存储在 SQL DB 中,这样我就可以免费获得持久性。但是,如果我的数据结构是图或树怎么办?
我能想到的一件事是将所有操作显式记录到磁盘(仅附加日志),并在发生崩溃时重播日志以保留以前的状态。如果日志变得太大,那么就会有一个压缩步骤。我猜这是数据库引擎在内部为持久性所做的事情(检查点就是这个过程的名称)?
顺便说一句,这不是整个数据集不适合内存的情况。