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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄泉 中级黑马   /  2014-4-7 14:01  /  1411 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;

  2. class CollectionDemo
  3. {
  4.         public static void sop(Object obj)
  5.         {
  6.                 System.out.println(obj);
  7.         }
  8.         public static void main(String[] args)
  9.         {
  10.                 //创建一个集合容器,使用C哦了了长提哦你接口的子类:ArrayList
  11.                 ArrayList al= new ArrayList();
  12.                 //添加元素
  13.                 al.add("java 01");
  14.                 al.add(4);
  15.                 al.add(true);
  16.                 //获取元素长度
  17.                 sop("size:"+al.size());
  18.                 //打印集合
  19.                 sop(al);
  20.                 //删除元素
  21.                 al.remove(4);//为什么不能删除数字?
  22.                
  23.                 sop(al);
  24.         }
  25. }
复制代码

为什么我想要删除 4 删除不了?

评分

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

查看全部评分

5 个回复

倒序浏览
remove()方法中加入1、2、3、4后,这里的1、2、3、4是指数组列表中的索引值,remove(4)是指剔除索引为4的对应的数组列表中的值,而你的ArrayList一共放入了三个值(java 01,4,true),所以会报数组角标越界异常,要想去除4应该写remove(1)。

评分

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

查看全部评分

回复 使用道具 举报
查看JDK文档,发现remove方法有重载:
E remove(int index)
          移除此列表中指定位置上的元素。
boolean remove(Object o)
          移除此列表中首次出现的指定元素(如果存在)。
而你的remove(4)属于移除角标为4的元素,可是没有角标为4的元素;想删除元素4可以使用remove(new Integer(4));

评分

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

查看全部评分

回复 使用道具 举报
52Pig 发表于 2014-4-7 14:12
remove()方法中加入1、2、3、4后,这里的1、2、3、4是指数组列表中的索引值,remove(4)是指剔除索引为4的对 ...

十分感谢
回复 使用道具 举报
首先,ArrayList集合不能添加基本数据类型,所以4是Object类型。
remove后面的参数,可以是索引,也可以是元素。
下面是删除数字的做法

        public static void main(String[] args) {
                //创建一个ArrayList
               
                List list = new ArrayList();
                //添加元素
               
                list.add("java 01");
               
                list.add(4);//4是Objext类型。
               
                list.add(true);
               
                //移出前
                System.out.println(list);
                //删除元素4有两种方法
                //第一种方法:因为ArrayList是有序的,可以移除元素对应的索引
               
                //System.out.println(list.remove(1));
               
                //第二种就是方法:就是得到所移出的元素。再调用remove。
               
                Object element = list.get(1);
               
                System.out.println(list.remove(element));
               
                //移除后
                System.out.println(list);

评分

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

查看全部评分

回复 使用道具 举报
方法list.remove();删除集合元素指的是元素的位置,不是元素的值,集合中只有3个元素,无法删除第四个元素。如图所示:

如果想删除集合中值为4的元素,只需知道4在集合中的位置即可,所以先打印输出集合,看到4在第1位上,于是list.remove(1);即可删除该元素。代码如下:
  1. import java.util.*;
  2. class Arraylist
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 //创建一个集合容器
  7.                 ArrayList list = new ArrayList();
  8.                 //添加元素
  9.                 list.add("java 01");
  10.                 list.add(4);
  11.                 list.add(true);
  12.                 //输入集合元素
  13.                 System.out.println(list);
  14.                 //输出集合长度
  15.                 System.out.println(list.size());
  16.                 //删除集合中某一元素
  17.                 list.remove(1);
  18.                 System.out.println(list);
  19.         }
  20. }
复制代码



评分

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

查看全部评分

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