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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张小庆 中级黑马   /  2012-4-27 10:14  /  2625 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.ArrayList;

public class ImitateArrayList extends ArrayList{

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ImitateArrayList ia = new ImitateArrayList();
                ia.add(0, "abc");
                ia.add(1, "def");
                ia.add(2, "opq");
                ia.add(3, "xyz");
               
                ia.remove("abeeec");//这里如果我删除我上面添加的元素,会删除,但是为什么不返回true呢?
                                    //如果我添加了没有的元素,也不返回false,又是为什么呢?哪儿错了啊?
                System.out.println(ia);
        }
        public void add(int index,Object value){
               
                long beginTime=System.currentTimeMillis();
                super.add(index, value);
                long endTime=System.currentTimeMillis();
                System.out.println("该方法运行时间为:"+(endTime-beginTime));

        }
        public   boolean remove(Object obj){
                if (contains(obj)) {
                        long beginTime = System.currentTimeMillis();
                        super.remove(obj);
                        long endTime = System.currentTimeMillis();
                        System.out.println("该方法运行时间为:" + (endTime - beginTime));
                        return true;
                }
                else
                        return false;
        }

}

4 个回复

倒序浏览
删除了已有的元素返回了true啊,你这里面没有验证返回值的打印语句啊。System.out.println(ia.remove("abc"));返回的是true
回复 使用道具 举报
哥们!你的代码我调试了下!是没有问题的!
你可以在
ia.remove("abc");的前面加个返回值输出下!
应该是没有问题的!
回复 使用道具 举报
不确定回答:
add你覆盖的返回类型是void的,remove你覆盖的是boolean的,而你remove删除的应该是制定位置上的,返回的是E(说实话,这泛型还是不能特别理解)
朋友我想你可能是做代理吧?提醒下,多看视频。

ArrayList有三种添加方法:
boolean add(E e)
          将指定的元素添加到此列表的尾部。
void add(int index, E element)
          将指定的元素插入此列表中的指定位置。
boolean addAll(Collection<? extends E> c)
          按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。

remove也有两种:
E remove(int index)
          移除此列表中指定位置上的元素。
boolean remove(Object o)
          移除此列表中首次出现的指定元素(如果存在)。
回复 使用道具 举报
你没打印输出返回布尔值。我对代码进行了小修改,会更加明显的表示删除上面添加的元素,会返回true,删除没有的元素会返回false

import java.util.ArrayList;
class  ImitateArrayList extends ArrayList{
        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
          ImitateArrayList ia = new  ImitateArrayList();
                ia.add(0, "abc");
                ia.add(1, "def");
                ia.add(2, "opq");
                ia.add(3, "xyz");
                boolean b1=ia.remove("abc"); //删除添加的元素,返回布尔类型的值
               
                boolean b=ia.remove("abeeec");   //删除没有的元素,返回布尔类型的值               
                System.out.println(b);
                System.out.println(b1);
                System.out.println(ia);      //打印删除元素后数组里面的元素
        }
        public void add(int index,Object value){
               
                long beginTime=System.currentTimeMillis();
                super.add(index, value);
                long endTime=System.currentTimeMillis();
                System.out.println("该方法运行时间为:"+(endTime-beginTime));
        }
        public   boolean remove(Object obj){
                if (contains(obj)) {
                        long beginTime = System.currentTimeMillis();
                        super.remove(obj);
                        long endTime = System.currentTimeMillis();
                        System.out.println("该方法运行时间为:" + (endTime - beginTime));
                        return true;
                }
                else
                        return false;
        }
}

打印输出的结构为
该方法运行时间为:0
该方法运行时间为:0
该方法运行时间为:0
该方法运行时间为:0
该方法运行时间为:0
false
true
[def, opq, xyz]

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