java使用ListIterator比较两个LinkedList<String>和for loop and get(int index)
我有两个LinkedList对象,它们的大小总是一样的。我想比较一下,看看它们的内容是否相同。为每个列表创建ListIterator并使用while hasNext循环与使用计数器(int i)并从0迭代到linkedlist相比,一般的性能和风格意味着什么。size()使用linkedlist。获取并比较这些值?有没有更好的方法让我忽略
我能想到的唯一一件事是,ListIterator方法可能会更好,因为我以后可以更容易地交换到另一个可比较的列表中(我不打算这样做)。我不知道这两个引擎盖下是什么样子,所以我不确定如何比较它们的性能
# 1 楼答案
随机访问
LinkedList
的性能非常糟糕(需要从一端开始,反复调用next
或类似的功能),因此ListIterator
会更快# 2 楼答案
事实证明
AbstractList.equals()
(它LinkedList
使用)会自动执行此操作,所以使用它。代码是:所以不要重新发明轮子
最后一点注意:不要使用
get(index)
来迭代LinkedList
。它是O(n)访问(O(1)用于ArrayList
),所以使用get(index)
的LinkedList
遍历将是O(n2)