何时使用数组与数据库

时间:2016-07-15 04:22:21

标签: arrays database

我是一名学生,并开始重新学习编程的基础知识。

我上面提到的问题开始于我阅读了一些Facebook帖子,大多数程序员在他们的应用程序中使用数组并且数组很有用。我开始意识到我从不在程序中使用数组。

我阅读了一些书,但他们只展示了数组的语法,并没有讨论何时应用它们来创建真实世界的应用程序。我试图在互联网上研究这个,但我找不到任何东西。当你使用数组时,你们有环境吗?你可以分享给我,这样我就可以有个主意。

另外,为了清除我的疑虑,请你向我解释为什么数组可以存储信息,因为数据库也可以存储信息。什么时候是我使用数据库和数组的时候?

我希望得到一个明确的答案,因为我在实习前有一个剩余的学期,我想清醒一下。我没有包含任何特定的编程语言,因为我知道大多数编程语言都有数组。

我希望得到一个我能够轻易理解的答案。

4 个答案:

答案 0 :(得分:4)

  

我什么时候才能使用数据库和数组?

我可以看到数据库和数组看起来像是针对同一问题的竞争解决方案,但是你要比较苹果和橙子。数组是一种在内存中表示结构化数据的方法。数据库是将数据存储在磁盘上的工具,直到您需要检索它为止。

你提出的问题有点像问:"什么时候使用整数来保存一个值,而不是一张纸?" 其中一个它们是记忆中的结构表征;另一种是存储工具。

  

当你使用数组时,你们有没有情况

在大多数应用程序中,数据库和数组一起工作。应用程序通常从数据库中检索数据,并将其保存在数组中以便于处理。这是一个简单的例子:

谷歌允许您在新闻中提到感兴趣的内容时收到提醒。我们称之为the event。许多人可能对the event感兴趣,因此Google需要保留一份人员列表以提醒您。怎么样?可能在数据库中。

the event出现时,Google会做什么?那么它需要:

  1. 从数据库中检索感兴趣的用户列表并将其放入数组
  2. 遍历阵列并向每个用户发送通知。
  3. 在此示例中,数组工作得非常好,因为用户构成了需要通过类似过程进行类似处理的数据结构的集合。这正是数组的用途!

    数组的其他一些常见用途

    1. 银行希望在当天结束时发送发票和付款到期提醒。因此,它从DB中检索具有逾期付款的用户,并循环访问用户'阵列发送通知。

    2. IT管理员小组想要检查列表中的所有关键网站是否仍在线。因此,它遍历域数组,ping每个域并将结果记录在日志中

    3. 教育计划希望对学生测试结果执行统计功能。因此,它将结果放在一个数组中,以便轻松执行averagesumstandardDev ...

    4. 等操作

      阵列在保持可预测的顺序方面也很棒。您可以确定,当您在数组中向前循环时,您会按照放入它们的顺序遇到值。如果您尝试在商店中模拟结帐行,则队列中的客户是完美的候选者。表示数组,因为:

      1. 它们是形状相似的数据:每个客户都有名称,购物车内容,等待时间和排名

      2. 他们将通过类似的流程:每个客户都需要enter queuerequest checkoutapprove paymentreject paymentexit queue <的方法/ p>

      3. 他们的订单应该是一致的:当您的程序执行next()时,您应该期望下一个在线的客户将是该注册表中的客户,而不是来自该线路的客户。< / p>

      4. 尝试将结帐队列存储在数据库中没有意义,因为我们希望在运行模拟时主动使用队列,因此我们需要内存中的数据。数据库可以保存所有客户及其结账结果的历史记录,可能是另一个程序以另一种方式检索和使用(可能构建定制的统计报告)

答案 1 :(得分:0)

有两点不同。让我试着解释一下这个简单的方法:

数组:容器对象保持固定数量的值。数组存储在您的内存中。所以它取决于你的要求,但是当你需要一个固定的快速的时候,只需使用数组。

数据库:当你有一个关系数据或者你想将它存储在某个地方而不是真的担心对象的大小。您可以将10,100,1000条记录存储到DB中。它也很灵活,您可以灵活地选择/查询/更新数据。简单的使用方法是:拥有关系数据,数量大,并希望灵活使用数据库。

希望得到这个帮助。

答案 2 :(得分:0)

当您拥有相同类型数据的多个实例时,有多种方法可以存储数据。 (例如,假设您希望保留有关您所在城市中所有人的信息。可能存在某种对象来保存每个人的信息,并且您可能希望拥有一个包含每个人信息的数据结构。 )

Java有两种主要方式可以在内存中存储多个数据实例:数组和Collections

数据库是不同的。正如我所看到的,数据库和数组或集合之间的区别是:

  1. 数据库是持久的,即数据将在程序运行完毕后保留;

  2. 数据库可以在程序之间共享,通常是在世界各地运行的程序;

  3. 数据库可能非常大,远远大于计算机内存中的数据库。

  4. 但是,数组和集合仅供一个程序在运行时使用。您的程序可能希望跟踪某些信息以进行计算。但是数据将存储在您计算机的内存中,因此其他计算机上的其他程序无法访问它。当程序运行完毕后,数据就会消失。但是,由于数据在内存中,因此使用它比数据库中的数据快得多,数据库存储在某种外部设备上。 (这实际上是一种过度概括,并没有考虑虚拟内存和缓存等问题。但对于学习基础知识的人来说,这已经足够了。)

    Java运行时为您提供三种基本类型的集合:集合,列表和映射。 set 是一组无序的独特元素;当数据不属于任何特定顺序时,您可以使用它,并且您想要的主要操作是查看集合中是否存在某些内容,或者返回集合中的所有数据而不关心订单。但是订购了一个清单;数据具有特定的顺序,并提供类似&#34;获取第N个元素的操作&#34;对于某些数字N,并添加到列表的末尾或插入列表中的特定位置。地图像集合一样无序,但它也会附加数据键,以便您可以通过提供密钥来查找数据。 (同样,这是一个过度概括。有些集确实有顺序,比如SortedSet。我甚至没有进入队列,树,多重集等,其中一些在第三方库中。 )

    Java为有序列表提供了List类型,但有几种方法可以实现它。一个是ArrayList。与所有列表一样,它提供了在列表中获取第N个项目的功能。但是ArrayList可以更快地提供此功能;在引擎盖下,它可以直接进入第N项。其他一些列表实现不会这样做 - 他们必须经历第一,第二等项目,直到他们到达第N个。

    数组ArrayList类似,但语法不同。对于数组x,您可以通过引用x[n]来获取第N个元素,而对于ArrayList,您可以说x.get(n)。就功能而言,最大的区别在于,对于阵列,您必须知道在创建阵列之前它有多大,而ArrayList可以增长。因此,如果您事先不知道您的列表有多大,那么您想要使用ArrayList。如果您知道,那么数组会更有效率。虽然你可能只用ArrayList来获取,但数组仍然是每种计算机语言的基本结构。例如,ArrayList的实现取决于引擎盖下的数组。

答案 3 :(得分:0)

将数组视为一本书,将数据库视为库。您不能同时与其他人共享这本书,但可以共享一个图书馆。您不能将整个图书馆放在一本书中,但是可以一次结帐一本书。