A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯佩 中级黑马   /  2013-1-22 23:32  /  2581 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-24 09:34 编辑

看教程知道ArrayList替代了Vector,ArrayList的数组结构是默认以50%长度延长的,而Vector则默认以100%长度延长,有什么方法或代码可以直观地演示出这种延长呢?

5 个回复

倒序浏览
Capacity  获取或设置 System.Collections.ArrayList 可包含的元素数
Count    获取 System.Collections.ArrayList 中实际包含的元素数。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
可以通过Size方法啊,
ArrayList是为了提高效率而出现的,它是线程不安全的,
而Vector是线程安全的但效率不高。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
︶ㄣ布丁 发表于 2013-1-23 03:36
Capacity  获取或设置 System.Collections.ArrayList 可包含的元素数
Count    获取 System.Collections.Ar ...

找了半天也没找到这两个类  还是我的版本问题哦
回复 使用道具 举报
Capacity  获取或设置 System.Collections.ArrayList 可包含的元素数
Count    获取 System.Collections.ArrayList 中实际包含的元素数。
上面的回答是误导,Vector对象才有capacity()方法,ArrayList对象有才size()方法,ArrayList 根本没有Capacity 属性和Count属性
回复 使用道具 举报
你这个问题我前几天看到了,也回去想了许久,但是一直想不到解决方法!后来返回去看了一下API文档,我是这么认为的:
ArrayList是50%扩容,Vector是100%扩容的,但是ArrayList是同步!Vector非同步的!要是比较他们的扩容的确不好比!
但是我这么想的,我做了一个不需要同步的小测试,都是写入一个很大的数组,就可以看出Vector的扩容是比ArrayList快的!
  1. import java.util.ArrayList;
  2. import java.util.Vector;

  3. public class Demo1 {
  4.         public static void main(String[] args) {
  5.                 ArrayList<Object> arr = new ArrayList<Object>();
  6.                 Vector<Object> vec = new Vector<Object>();
  7.                 long start1 = System.currentTimeMillis();
  8.                 for (int i = 0; i < 10000000; i++) {
  9.                         arr.add(i);
  10.                 }
  11.                 long end1 = System.currentTimeMillis();
  12.                 System.out.println("ArrayList的用时是"+(end1-start1)+"毫秒");
  13.                
  14.                
  15.                 long start2 = System.currentTimeMillis();
  16.                 for (int i = 0; i < 10000000; i++) {
  17.                         vec.add(i);
  18.                 }
  19.                 long end2 = System.currentTimeMillis();
  20.                 System.out.println("Vector的用时是"+(end2-start2)+"毫秒");
  21.         }
  22. }
复制代码
以上是我的想法与测试,不知道是否合适!但是我认为还是能够比较出两者的扩容的区别的!你还可以把数组调的更大!效果更明显!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马