Java查看List扩容后的容量

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的

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值