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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈帅雷 黑马帝   /  2011-12-21 23:22  /  1633 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈帅雷 于 2011-12-22 09:25 编辑

import java.util.Vector;

public class test_Vector_Remove_All {

        public static void main(String[] args) {
                Vector<Integer> v = new Vector<Integer>();
                v.add(new Integer(11));
                v.add(new Integer(22));
                v.add(new Integer(33));
                v.add(new Integer(44));
                v.add(new Integer(55));
               
                for(int i=0; i<v.size();i++){
                        v.remove(i);                                
                }
                for(int i=0; i<v.size();i++){
                        System.out.println(v.get(i));
                }
        }

}

发现第一次没删除完,输出结果居然是22 44 ?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

2 个回复

正序浏览
Vector : 是可变长集合。当你上删除了前面的以后,后面的就会向前移动,所以当你删除了第一个那么第二个将移动的到第一个的位置,以此类推!所以会输出 22 44 。
回复 使用道具 举报
remove(int index) :它是 移除此向量中指定位置的元素。并将所有后续元素左移(将其索引减 1)。返回此向量中移除的元素。
解决办法 :
    for(int i=0; i<v.size;){
          v.remove(0)     
      }
为什么这里不写i++;因为每执行一次remove(int index)方法时,v.size就会减小1.

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马