<分区>
我正在学习软件开发基础类(class)中的数据结构。我遇到过以下数据结构:
- 结构
- 数组
- 列表
- 队列
- 哈希表
...等等。我非常了解它们的工作原理,但我很难理解何时何地使用它们。
我可以识别队列数据结构的使用,因为这有助于打印机和/或线程排队和确定优先级。
了解数据结构的优点和缺点并在代码中实现它是两回事,我发现前者很困难。
使用上面列出的每个数据结构的简单示例是什么?
例如:
Queue:先进先出→用于打印机队列对文档进行排队
<分区>
我正在学习软件开发基础类(class)中的数据结构。我遇到过以下数据结构:
...等等。我非常了解它们的工作原理,但我很难理解何时何地使用它们。
我可以识别队列数据结构的使用,因为这有助于打印机和/或线程排队和确定优先级。
了解数据结构的优点和缺点并在代码中实现它是两回事,我发现前者很困难。
使用上面列出的每个数据结构的简单示例是什么?
例如:
Queue:先进先出→用于打印机队列对文档进行排队
最佳答案
当我第一次开始编程时,我很难理解它们,所以我决定先提醒一下。
我尽量做到简单。尝试 Oracle Docs 获取更多详细信息
Struct:当您需要类似对象的结构时,您可以在其中对相关数据进行分组,请使用结构。尽管在 Java 中很少使用结构(因为对象是在它们的位置创建的)
数组:数组是连续的内存。当您需要基于索引的固定时间访问时,与链表不同,数组非常快,因此请使用它们。
但是数组的积压是你需要在初始化的时候知道大小。此外,数组不支持更高级别的方法,例如 add()、remove()、clear()、contains()、indexOf() 等。
List:是一个可以使用Arrays(ArrayList)实现的接口(interface) 或链表(LinkedList)。它们支持前面指定的所有更高级别的方法。
此外,列表会在空间不足时自行调整大小。您可以指定将创建底层数组或链表的初始大小,但只要达到限制,它就会创建更大尺寸的底层结构,然后复制初始结构的内容。
队列或堆栈: 是一种实现技术,并不是真正的数据结构。如果你想要 FIFO 实现,你可以在 Arrays 或 LinkedList 上实现 Queue(是的,你可以在这两种数据结构上实现这种技术) https://en.wikibooks.org/wiki/Data_Structures/Stacks_and_Queues
HashMap:只要您想存储键值对,就会使用 Hashmap。如果您注意到,您不能为此目的使用数组或链表或任何其他提到的数据结构。一个键可以是从字符串到对象的任何东西(但注意它必须是一个对象,不能是原始类型),一个值也可以是任何对象
google 出每个数据结构以获取更多详细信息
关于java - 什么时候使用哪种数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29030141/