今天在网上看了下ArrayList的一些东西,发现很多人在问最大长度是多少?
这下我突然来兴趣了,要知道各大程序员使用集合不只几万次了,但是长度多长貌似还真没有人考虑过吧。
源码中可以看出初始长度是10,当然扩容机制在做的程序猿都知道是1.5倍。但是极限在哪里?无限扩容?
很多人都说:我们1.5倍扩容的大小超过了这个指定的范围2147483639时 系统会报一个内存溢出异常。还有别的解释。
我们不争这个,就说这个最大值21亿左右,也就是int的最大值。
问题来了:
你家的数据库有几条数据?
你家的程序需要同时操作21亿条数据,并且读取到list里面?
既然这样学啥sql优化,学啥数据库优化?
当然容器一定会有极限的,但是代码写到一定程度,业务到了一定程度,一定不是考虑放下放不下的问题,而是要考虑用户的体验,程序的流畅,服务器的压力,并发等因素。
所以我认为,ArrayList的容量咱们就别研究了,你一定不会用到它极限的那一天。