黑马程序员技术交流社区

标题: 求解惑! [打印本页]

作者: 黄泉    时间: 2014-4-7 14:01
标题: 求解惑!
  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 删除不了?
作者: 52Pig    时间: 2014-4-7 14:12
remove()方法中加入1、2、3、4后,这里的1、2、3、4是指数组列表中的索引值,remove(4)是指剔除索引为4的对应的数组列表中的值,而你的ArrayList一共放入了三个值(java 01,4,true),所以会报数组角标越界异常,要想去除4应该写remove(1)。
作者: 1453149997    时间: 2014-4-7 14:26
查看JDK文档,发现remove方法有重载:
E remove(int index)
          移除此列表中指定位置上的元素。
boolean remove(Object o)
          移除此列表中首次出现的指定元素(如果存在)。
而你的remove(4)属于移除角标为4的元素,可是没有角标为4的元素;想删除元素4可以使用remove(new Integer(4));
作者: 黄泉    时间: 2014-4-7 16:21
52Pig 发表于 2014-4-7 14:12
remove()方法中加入1、2、3、4后,这里的1、2、3、4是指数组列表中的索引值,remove(4)是指剔除索引为4的对 ...

十分感谢
作者: 张治国    时间: 2014-4-7 16:54
首先,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);
作者: alucard    时间: 2014-4-7 17:28
方法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. }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2