【问题标题】:How to implement add method from List interface如何从 List 接口实现 add 方法
【发布时间】:2017-03-26 10:32:22
【问题描述】:

我想为我的 Customlist 实现 add 方法,该方法在 java 中实现 List。代码如下所示:

public class CustomList implements List{
    private List list;
    public boolean add(Object s) {
        boolean check = false;
        try {
            System.out.println("LOG: now performing the addition of an object");
            long startTime = System.nanoTime();
            check = list.add(s);
            long estimatedTime = System.nanoTime() - startTime;
            System.out.println(estimatedTime);
            System.out.println();
        }
        catch (Exception e)  {
            e.printStackTrace();
        }
        return check;
    }

    public CustomList(List l) {
        list = l;
    }
}

但是,当我在 main 方法中使用它时,它不起作用。似乎只有我在 Customlist 中的列表实际上添加了新对象,但在 main 方法中,它没有。我该如何解决这个问题,谢谢。 这是TestCases类中的主要方法:

public class TestCases {
    private static CustomList t = new CustomList(new ArrayList());
    public static void main(String[] args) throws IOException {
        t.add("abcd");
        for(Object temp : t) {
            System.out.println(temp);
        }
    }
}

更新:我刚刚为每个循环添加了一个用于测试的循环,但它不会打印任何内容,并且出现空指针异常。

【问题讨论】:

  • 你怎么知道它没有向t添加对象?
  • 使用所有方法发布您的实际代码。您是如何检查 main 方法中的列表内容的?
  • 我使用每个循环打印出 t 中的字符串,但出现空指针异常。
  • @DN96 我认为你不应该实现 List 你应该扩展 ArrayList
  • 你还没有展示剩下的方法。您的 iterator() 方法可能是错误的。注意 List 是一个泛型类型。自 Java 5 以来,十多年前。

标签: java list add implementation


【解决方案1】:
import java.util.ArrayList;
import java.util.List;

public class CustomList<E> extends ArrayList<E>{
    List list;

    public CustomList(List l) {
        list = l;
    }
}

测试代码

 public class TestCases {
        private static CustomList t = new CustomList(new ArrayList());
        public static void main(String[] args) throws IOException {
            t.add("abcd");
            System.out.println(t.size());
            for(Object temp : t) {
                System.out.println(temp);
            }
        }
    }

操作结果:

1
abcd

当你重写 List 方法时,原来的 add 迭代器方法全部销毁所以我认为最好不要重写这些方法。 如果有兴趣查看List源码

【讨论】:

  • 谢谢,但我的教授希望 add 方法具有更多功能,例如打印执行时间和语句:“LOG:现在正在执行添加对象”。如何在不覆盖 add 方法的情况下做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多