繁体   English   中英

默认情况下,列表的容量是多少?列表可以存储多少个元素?

[英]What is by default capacity of list?How many elements can a list store?

我的第一个问题是我想从数据库中选择100000个元素,列表可以存储那么多元素吗?
我的第二个问题是我想在最短的时间内从数据库中获取所有元素吗?列表是存储元素的最佳方法还是有其他方法可以提高性能?

1)是的,list可以存储100000+个元素.List的最大容量仅受JVM可用内存量的限制。

2)对于性能问题,取决于要存储的数据类型。 通常,HashMap用于数据库。

我通常使用列表超过您的配额,列表是一个好方法。 如果使用字符串真的很棒,但是原始类型呢?

您可以将Integer.MAX_VALUE元素存储在我怀疑的列表中,因为index的值不能接受更多。

List的最大大小受Java整数的最大值限制,因为整数用于在方法int size();中为列表建立索引并返回列表的int size(); Java中int的最大值是Integer.MAX_VALUE ,它是2147483647。

List的特定实现可能有一个较低的限制,但是对于java.util.ArrayList ,这是一个限制。

当然,您可能会在很久之前耗尽内存,这实际上取决于计算机的内存以及您使用的是64位版本的JVM还是32位版本的JVM。

对于第二个问题:从数据库传输数据所花费的时间几乎总是比将数据存储在计算机内存中所花费的时间高得多,因此,如果您仅担心在其中存储数据所花费的时间。列表,那么您不必担心。 但是,如果您正在考虑检索数据所花费的时间,那么它实际上取决于您如何从集合中检索数据(例如,使用特定键)。

在许多情况下,当您通过特定键检索数据时,诸如java.util.Map类的java.util.HashMap将具有更好的性能。

  • 列表可以存储超过100000个元素。 列表容量仅受JVM内存容量或Integer.MAX_VALUE中的较小者限制。

  • 但是,如果您使用已知的将要检索的元素数,则使用简单的数组可以提供更好的性能。

列表可以存储那么多元素吗?

java.util.List许多实现并不限制元素的数量,即元素的数量仅受可用堆内存的限制。

最常用的List实现ArrayList限制为大约20亿个元素(Integer.MAX_VALUE),因为这是Java数组的最大长度。

其他List实现,例如Arrays.asList()Collections.emptyList()Collections.singletonList()返回的列表,具有固定的大小,不能添加到其中。

列表是存储元素的最佳方法,还是有其他方法可以提高性能?

如果您只需要存储元素以供以后迭代,则ArrayList可能是最佳选择,但是与与数据库进行通信的成本相比, 任何集合实现的开销都将是微不足道的,因为数据库通常必须执行磁盘I / O,这比将数据写入主存储器要慢得多,而写入实际数据(列表中的对象)要比写入Collection本身要花费更长的时间。

我想从数据库中选择100000个元素,列表可以存储那么多元素吗?

是。 ArrayList (2 ^ 31)的大小有上限...但是您还有很长的路要走。 而其他一些List实现没有此限制。

我想在最短的时间内从数据库中获取所有元素? 列表是存储元素的最佳方法,还是有其他方法可以提高性能?

大多数CPU时间将花费在执行查询和从结果集读取而不是附加到列表上。

集合的性能将取决于元素类型(对象或基元),以及是否知道要包含多少个元素。 如果您事先知道元素计数,则裸数组将为您提供最佳性能;如果您不知道1,则为ArrayList 对于基本类型,请考虑使用“ trove”列表类型,以避免使用基本类型包装程序的开销。

1-即...除非您准备为基于数组的集合实现类似ArrayList的扩展算​​法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM