我的第一个问题是我想从数据库中选择100000个元素,可以列出存储多个元素吗?
我的第二个问题是我想在最短的时间内从数据库中获取所有元素?列表是存储元素的最佳方式还是有其他方法可以提高性能?
答案 0 :(得分:1)
1)是的,list可以存储100000多个元素.List的最大容量仅受JVM可用内存量的限制。
2)对于性能问题,它取决于要存储的数据类型。 Normaly HashMaps用于数据库。
答案 1 :(得分:1)
我通常使用列表超过您的配额,列表是一个好方法。如果你使用字符串真的很棒,但原始类型呢?
答案 2 :(得分:1)
你可以在我怀疑的List中存储Integer.MAX_VALUE元素,因为index的值不能接受超过这个。
答案 3 :(得分:1)
List
的最大大小受Java整数的最大值限制,因为整数用于索引列表并返回方法int size();
中列表的大小。 Java中int
的最大值为Integer.MAX_VALUE
,即2147483647。
List
的特定实施可能有一个下限,但对于java.util.ArrayList
,这是限制。
当然,在此之前很久就会耗尽内存,这实际上取决于计算机的内存以及您使用的是64位版本的JVM还是32位版本。
对于您的第二个问题:从数据库传输数据所花费的时间几乎总是远远高于将数据存储在计算机内存中所花费的时间,所以如果您只是担心关于将数据存储在列表中所花费的时间,那么您不必担心。 但是,如果您正在考虑检索数据所需的时间,那么它实际上取决于您从集合中检索数据的方式(例如,使用特定的键)。
在许多情况下,当您通过特定密钥检索数据时,java.util.Map
的实施(如java.util.HashMap
)会有更好的效果。
答案 4 :(得分:1)
列表可以存储更多100000个元素。列表容量仅受JVM内存容量或Integer.MAX_VALUE(以较小者为准)的约束。
但是,如果您使用知道将要检索的元素数量,那么使用简单数组可以提供更好的性能。
答案 5 :(得分:1)
可以列出存储多个元素吗?
java.util.List
的许多实现不限制元素的数量,即元素的数量仅受可用堆内存的限制。
最常用的List实现ArrayList
限制为大约20亿个元素(Integer.MAX_VALUE),因为这是Java数组的最大长度。
其他List
实施,例如Arrays.asList()
,Collections.emptyList()
或Collections.singletonList()
返回的列表,具有固定大小,无法添加。
列表是存储元素的最佳方式还是有其他方法可以提高性能?
如果您只需要存储元素以供以后迭代,那么ArrayList可能是最佳选择,但与与数据库通信的成本相比,任何集合实现的开销将是因为数据库通常必须执行磁盘I / O,这比将数据写入主内存慢得多,而写入实际数据(列表中的对象)所需的时间比编写Collection本身要长。
答案 6 :(得分:0)
我想从数据库中选择100000个元素,可以列出存储多个元素吗?
是。 ArrayList
(2 ^ 31)的大小有一个上限......但是你还有很长的路要走。其他一些List
实施没有这个限制。
我想在最短的时间内从数据库中获取所有元素?列表是存储元素的最佳方式还是有其他方法可以提高性能?
大部分CPU时间将用于执行查询和从结果集读取而不是附加到列表。
集合的性能取决于元素类型(对象或基元),以及是否知道将有多少元素。如果您事先知道元素计数,则裸阵列将为您提供最佳性能;如果您不知道 1 ,则为ArrayList
。对于原始类型的情况,请考虑使用" trove"而不是列表类型以避免使用基本类型包装器的开销。
1 - 那是......除非您准备为基于数组的集合实现类似ArrayList的扩展算法。