Trims the capacity of this vector to be the vector's current size.

解决方案 »

  1.   

    Vector.size()是返回Vector容器中对象的数量
    Vector.trimToSize()压缩到容器实际大小
    例如
    Vector v = new Vector(10)//容器的大小为本10
    而实际上容器中只有4个对象
    v.trimToSize()//容器大小变为4
      

  2.   

    size():
    public int size()
    Returns the number of components in this vector. trimToSize:
    public void trimToSize()
    Trims the capacity of this vector to be the vector's current size. If the capacity of this vector is larger than its current size, then the capacity is changed to equal the size by replacing its internal data array, kept in the field elementData, with a smaller one. An application can use this operation to minimize the storage of a vector.
      

  3.   

    Vector.size()就不用说拉:Ppublic void trimToSize() {
      modCount++;
      int oldCapacity = elementData.length;
      if (size < oldCapacity) {
        Object oldData[] = elementData;
        elementData = new Object[size];
        System.arraycopy(oldData, 0, elementData, 0, size);
      }
    }
    去掉多余的空间,使内部数组的大小刚好等于ArrayList的size()
      

  4.   

    Vector.trimToSize()压缩到容器实际大小
    大小和数量有什么区别?
      

  5.   

    你糊涂
    简单说来
    Vector.size()得到当前vector里面装了多少元素
    Vector.trimToSize()把vector里面的没用到的元素去掉
    用了Vector.removeElement以后,vector里面就出现了空元素
      

  6.   

    "用了Vector.removeElement以后,vector里面就出现了空元素",我错了
    另举例:
    Vector aa =  new Vector(10);       // 规定生成的Vector里面可以容纳10个元素,现在aa还是空的
    System.out.println(aa.capacity());     // 输出10
    System.out.println(aa.size());         // 输出0
    aa.trimToSize();
    System.out.println(aa.capacity());    //  现在输出0
    System.out.println(aa.size());         // 输出0
    实际上Vector的capacity没有用,即使用Vector aa =  new Vector(10)定义capacity为10,也可以add超过10个元素
      

  7.   

    package common;
    import java.util.*;public class test {
     public static void main(String args[]) {
      Vector aa = new Vector(1);
      Object tt;
      System.out.println(aa.capacity());
      aa.addElement(tt = new Object());
      aa.addElement(new Object());
      System.out.println(aa.capacity());
      aa.removeElement(tt);
      System.out.println(aa.capacity());
      aa.trimToSize();
      System.out.println(aa.capacity());
     }
    }输出:
    1
    2
    2
    1总结:trimToSize()的作用(伪代码):
    if [Vector.capacity() > Vector.size()] then { Vector.capacity() = Vector.size() }
      

  8.   

    看czhhua28(风之子)的例子Vector v = new Vector(10)
    的意思就是开一个大小是10的Vector对象v,然后
    v.add("A");
    v.add("B");
    v.add("C");
    v.add("D");
    就是“实际上容器中只有4个对象”的意思,最后,等于v里面有6个位置是空的(这么说可能不太符合细节,不过楼主就这么理解就行)就像给你10个筐,
    然后,你4个筐里放了东西,
    trimToSize()就能得出你放了东西的筐的数量。
    而size()得出的是你有几个筐。good luck
      

  9.   

    由于Vector的capacity能自动增加 所以往往占有空间大于Vector里面放置对象的总空间,
    比如Vector vv = new Vector(4);// capacity为4 size 为0
         vv.add("a");//capacity为4 size为1
         vv.trimToSize();//就是把capacity设置刚好放置"a"对象的空间,其他的释放 capacity 为1 size为1