据我所知,java.util.List
没有尺寸限制。据我了解,size()方法:
返回此列表中的元素数。如果此列表包含 超过Integer.MAX_VALUE元素,返回Integer.MAX_VALUE。
因此我有以下问题:
如果我的List
的尺寸大于Integer.MAX_VALUE
,是否有办法确定确切尺寸?
答案 0 :(得分:2)
您需要使用更大的数据类型自己计算。
long realSize;
if (myList.size() < Integer.MAX_VALUE) {
realSize = myList.size();
} else {
realSize = Integer.MAX_VALUE;
ListIterator<Foo> iter = myList.listIterator(Integer.MAX_VALUE);
while (iter.hasNext()) {
realSize++;
iter.next();
}
}
答案 1 :(得分:0)
如果列表支持的大小很大,它几乎肯定会支持某种替代size
方法,您可以使用它来获取大小的长度。例如,我发现的第一个此类实现HugeCollections具有longSize
方法。没有这种方法试图获得真实尺寸的开销是荒谬的。
我认为任何标准库List实现都不支持那么庞大的大小; ArrayList和LinkedList没有。如果您需要处理此类问题,您正在使用的巨型列表类型的文档应该告诉您该怎么做。
答案 2 :(得分:0)
这取决于您使用的List
的具体实施方式。例如,ArrayList
在内部使用java数组,其最大大小为Integer.MAX_VALUE - 5
。 List
的其他实现可能具有不同的最大大小。