Java查看List扩容后的容量
来源:互联网 发布:福建广电网络人工电话 编辑:程序博客网 时间:2024/04/19 13:49
Java中数组的容量是固定的,顶以后无法修改,而集合类很好的解决的变长数组的需求,集合的容量是有Java自己控制的,但是如何才能知道扩容后的大小呢?
如果是使用size(),我们看到的依然是其中元素的个数,而没有办法看到扩容后的容量大小,为了看到这个容量大小我们可以使用反射来查看,下面直接上代码
public static void main(String[] args) { List<Integer> myList=new ArrayList<Integer>(10); System.out.println(myList.size()); myList.add(1); myList.add(2); myList.add(3); myList.add(4); myList.add(1); myList.add(2); myList.add(3); myList.add(4); myList.add(4); System.out.println(myList.size()); myList.add(6); myList.add(5); Class c=myList.getClass(); Field f; try { f=c.getDeclaredField("elementData"); f.setAccessible(true); Object[] o=(Object[])f.get(myList); System.out.println(o.length); } catch (NoSuchFieldException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
运行得到的结果为
可以看到在达到初始容量后,扩容为了原来的1.5倍,但是我之前在一些书中看到的结论是(length*3)/2+1,但是经过自己的实践发现是直接的1.5倍,我的jdk为1.8的
0 0
- Java查看List扩容后的容量
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- HashMap的容量与扩容
- List、Map、set的加载因子,默认初始容量和扩容增量
- Java中的List的容量设置
- ArrayList的默认初始容量及扩容
- ArrayList的默认初始容量及扩容
- java容器的默认初始容量、加载因子、扩容增量问题
- Java之ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- 关于List的扩容问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 关于ArrayList的初始容量以及扩容的效率问题
- 常用集合的默认初始容量和扩容的原因
- UVA 152 Tree's a Crowd
- php框架laravel学习 二 (数据库建立迁移与建模)
- java synchronized静态同步方法与非静态同步方法,同步语句块
- 通过SQLServer的数据库邮件来发送邮件
- HDU4565 So Easy!(数学+矩阵快速幂)
- Java查看List扩容后的容量
- Java回顾之I/O
- ListView上拉加载更多
- 批量清除WPS/Word文档中的回车符
- jQuery学习之AJAX
- 第三周工作周报
- POJ 3641 Pseudoprime numbers
- LeetCode(20)Valid Parentheses
- GC垃圾收集算法