【发布时间】:2014-05-23 05:59:50
【问题描述】:
谁能给出remove(Object obj)方法的实现是java中的List?
这个重载方法是如何以及在哪里定义的,ArrayList 中的实现是什么?
ArrayList 和 LinkedList 之间,remove(int index) 方法在ArrayList 因为底层实现(一个是数组,另一个是链表)。但是 remove(object obj) 方法呢?哪个会更快?因为根据我的理解,两者都需要相同的时间。在ArrayList 中,迭代将在连续的内存位置上,而在LinkedList 中则不会。但是我们基本上必须遍历每个元素并使用 equals 检查需要获取哪个对象。
编辑:
我只是想我会提供一些背景,为什么我会问这个问题。我们经常被要求频繁插入和删除哪个 List 最好使用。我对此感到非常困惑。如果我们使用remove(int index)方法ArrayList可以跳转到位置(移动底层指针并删除对象)然后移动元素而对于LinkedList它需要从headNode遍历到索引并更改nextNode指向后面的值。哪个会更快,为什么?当我们开始使用remove(Object o) 方法时会发生什么?一些信息:
When to use LinkedList over ArrayList?
【问题讨论】:
-
没有这种方法。为什么你认为有?
-
Map有一个get(Object key)方法,你是这么想的吗? -
对不起!!我的意思是列表接口的remove方法实现的区别
-
List是抽象类,List的不同实现有自己的实现方法
-
@Salauyou List 是一个接口。问题的第二部分是关于 ArrayList 和 LinkedList 的实现
标签: java list arraylist linked-list