何时使用哪种数据结构?

时间:2015-03-13 10:40:47

标签: java data-structures

我正在学习软件开发基础课程中的数据结构。我遇到了以下数据结构:

  • 的Structs
  • 阵列
  • 解释
  • 队列
  • 哈希表

......等等。我很清楚它们是如何工作的,但我很难理解何时何地使用它们。

我可以识别队列数据结构的使用,因为这有助于打印机和/或线程排队和优先级排序。

了解数据结构的优缺点并在代码中实现它是不同的事情,我发现前者很难。

使用上面列出的每个数据结构的简单示例是什么?

例如:

队列:先进先出→用于打印机队列以排队文档

3 个答案:

答案 0 :(得分:2)

当我第一次开始编程时,我很难理解它们,因此我决定先介绍一下。

我想尽可能简单。请参阅Oracle Docs了解更多详情


结构:当您需要类似对象的结构时,您可以在其中对相关数据进行分组,请使用结构。虽然结构很少在java中使用(因为对象是在它们的位置创建的)

数组:数组是连续的内存。当你想要基于索引的固定时间访问时,与linkedlist不同,数组非常快,所以使用它们。

但是数组的积压是你需要知道初始化时的大小。此外,数组不支持更高级别的方法,如add(),remove(),clear(),contains(),indexOf()等。


List:是一个可以使用Arrays(ArrayList)实现的接口  或LinkedLists(LinkedList)。它们支持前面指定的所有更高级别的方法。

此外,列表会在空间不足时重新调整大小。您可以指定将创建基础Arrays或LinkedLists的初始大小,但是无论何时达到限制,它都会创建具有更大大小的基础结构,然后复制初始大小的内容。


队列或堆栈:是一种实现技术,而不是真正的数据结构。如果你想要FIFO实现,你可以在Arrays或LinkedList上实现Queue(是的,你可以在这两个数据结构上实现这个技术) https://en.wikibooks.org/wiki/Data_Structures/Stacks_and_Queues


HashMap:只要您想存储键值对,就会使用Hashmap。如果您注意到,则不能为此目的使用数组或链接列表或任何其他提到的数据结构。一个键可以是从String到Object的任何东西(但请注意它必须是一个对象而不能是一个原始的),一个值也可以是任何对象


谷歌了解每个数据结构以获取更多详细信息

答案 1 :(得分:0)

这取决于你需要什么。如果您阅读并了解有关这些数据结构的更多信息,您将找到实现这些数据结构的便捷方法。

也许看过这本书? http://www.amazon.com/Data-Structures-Abstraction-Design-Using/dp/0470128704

答案 2 :(得分:0)

所有这些数据结构都是根据他们在程序中的需求使用的。尝试找到一个数据结构的优势到另一个。这应该让你的事情更清楚。我说的不太清楚,但我会试一试

例如,

结构用于创建数据类型,假设您希望拥有Book&的数据类型。有这本书的名字Book Structure

如果您使用链接列表,则可以更轻松地访问列表。有时比阵列好。队列,好吧,你可以把它们想象成现实生活中的队列,First In将是First Out。因此,您可以在需要设置此优先级时使用它们。

就像我说的那样,寻找一个优于另一个的优点应该让你明白。