2016-03-13 22 views
0

有人能告訴我,如果對(ListIterator<E> it = listIterator(); it.hasNext();)部分的代碼應該被寫爲for (ListIterator<E> it = list.listIterator(); it.hasNext();)其中list是對ArrayList或LinkedList類的實例的引用?這兩種形式是否可接受且正確?我應該在哪裏使用一個?爲(的ListIterator <E>它的ListIterator =(); it.hasNext();)VS爲(的ListIterator <E> IT = list.listIterator(); it.hasNext();)

public int indexOf(E e) { 
    for (ListIterator<E> it = listIterator(); it.hasNext();) 
     if (e == null ? it.next() == null : e.equals(it.next())) 
      return it.previousIndex(); 
    // Element not found 
    return -1; 
} 

回答

1
for (ListIterator<E> it = listIterator(); it.hasNext();) 

此代碼調用自己(this),並使用其返回值的listIterator()。編寫此代碼的類對List執行編輯的機會更大。

for (ListIterator<E> it = list.listIterator(); it.hasNext();) 

此代碼調用存儲在list,並使用其返回值的實例引用的listIterator()。這段代碼可能會出現在編寫例程的地方。

兩者都可以接受,但是否正確應該取決於你想要做什麼。

+0

非常感謝您回答我的問題!我只是想知道你是否可以給我一個工作示例(ListIterator it = listIterator(); it.hasNext();),我很困惑如何使用它。您的幫助將不勝感激! – Thor