当前位置:  技术问答>java相关

Vector的问题。

    来源: 互联网  发布时间:2017-04-01

    本文导语:  Vector初始的对象容纳量是10,如果对象数量增加,容量就会加倍,...... 但是看到一本书上这样说: //原文如下:     Vector vt = new Vector(100);  //定义初始容量为100 例如,如果你再刚才定义的Vector对象中最终存储了...

Vector初始的对象容纳量是10,如果对象数量增加,容量就会加倍,......
但是看到一本书上这样说:
//原文如下:
    Vector vt = new Vector(100);  //定义初始容量为100
例如,如果你再刚才定义的Vector对象中最终存储了7000个对象,那么实际它的
空间却可以容纳12800个对象。如果每个对象引用占4字节,那么这样会多占20kb的
内存。
//结束

老大们:我存7000个对象引用,怎么会到12800呢??请指教

|
如是是加倍就是
初始100>>200>>400>>800>>1600>>3200>>6400>>12800
7000比6400大,所以就要12800了,不知道真实系统的是不是这么加倍的.
觉得这样加倍方式不大好.

|
哎,说来话长,其实Vector里面是用Object[]来存放对象的,默认情况下new Vector()时Object[]的长度为10,增长量为0,new Vector(100)时,长度为100,增长量也为0,当new Vector(100, 20)时,Object[]的长度为100,增长量为20。如果我们不断的addElement(),Object[]肯定容量不够,当发生这种情况时,Vector就会首先new一个长度更大的Object[],其长度具体有多大随后再说,然后把旧Object[]里的对象一个一个的复制到新Object[]里,最后再把当前正发生addElement()的对象也放到最后边,这样,我们只管addElement()就行了,大可放心去写程序,不用担心里面的细节。再说新Object[]的长度是怎样确定的:当增长量为0时,新长度是旧长度的2倍,当增长量为>0时,新长度=旧长度+增长量。到这就完全明白了吧!所以,楼主可以new Vector(7000,1),这样存7000个对象引用,一个也不会多浪费。可是,还有一个矛盾:当我增长量定得很小比如1时,如果经常发生Object[]容量不足,那么就惨了,每次都要重新new Object[],然后还要一个一个地复制,性能可就差了。所以,用Vector时,如果可能的总容量不是很大比如

    
 
 

您可能感兴趣的文章:

  • Vector.addElement()的问题,Urgent!
  • 简单的关于Vector复制的问题
  • Vector的问题
  • 一个关于Vector的问题
  • jsp分页问题,用Vector怎样实现
  • 请问一个有关向Vector中加入元素的问题
  • Vector简单问题~
  • 有关不同线程同时访问同一公共Vector变量的问题(欢迎讨论)
  • 一个简单的java.util.Vector类函数使用问题
  • 一个有关Vector的简单问题。
  • 还是那个简单的java.util.Vector类函数使用问题
  • 使用Vector的一个问题
  • Vector里元素对调问题!
  • 往Vector里循环封装字符串数组的问题
  • 一个比较笨的问题:如何用两个Vector对象动态生成一个JTable?及从JTable里取得数据。
  • 帮忙解决一个Vector的问题
  • 一个vector的问题!
  • 求教:Vector类型与String类型间的转换问题
  • 请教大家和pengji(彭乃超) 有关Vector和ArrayList的问题
  • 一个Vector应用的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util类vector<e>的类成员方法: vector定义及介绍
  • 如何创建vector数组!我这些不对static Vector report[8]=new Vector()[8];高手指点me:)
  • C++ Vectors 成员 swap():交换两个Vector
  • 在一个方法如:public Vector getDistinctVector(Vector old,Vector new),如何可以保证 old 不被改写,因为old是从外面传入来的,old本
  • C++ Vectors 成员 assign():对Vector中的元素赋值
  • 如何把包含Vector的一个Vector转换成Integer[][]??
  • C++ Vectors 成员 empty():判断Vector是否为空(返回true时为空)
  • 在线等待:如何把vector清空,再用该清空vector是,索引是从0开始,而不是紧接着上次清空是的索引?
  • C++ Vectors 成员 rbegin():返回Vector尾部的逆迭代器
  • 一个Vector应用的问题 iis7站长之家
  • C++ Vectors 成员 reserve():设置Vector最小的元素容纳数量
  • 急!50分!我现在想要在VECTOR中直接存储结果集???但不想使用"在VECTOR中存储一个
  • C++ Vectors 成员 rend():返回Vector起始的逆迭代器
  • 请问ArrayList和Vector哪个好?
  • C++ Vectors 成员 resize():改变Vector元素数量的大小
  • Vector包含的对象什么时候是可clone的?
  • C++ Vectors 成员 size():返回Vector元素数量的大小
  • 锁定Vector类型,使其同一时刻只能有一个线程访问,怎么实现??
  • C++ Vectors 成员 push_back():在Vector最后添加一个元素
  • 想问一下vector 和object[][]之间怎么转换?
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 在JSP中怎样显示Vector的数据?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3