說鏈表,我有一個LinkedList列表1到對象兩個引用:迭代通過在Java中
LinkedList<Object> List1 = new LinkedList<Object>();
Object first;
Object last;
我不想使用這些對象的列表索引引用它們,因爲我的列表長度發生變化。我認爲這是行不通的。 現在我想遍歷由第一個和最後一個定義的子列表,其中首先定義List1中子列表的開始,最後定義List1中子列表的結束。現在
我的問題是,據我所知,我不能這樣做
while (current != last){
// do something
current = someiterator.next();
}
,因爲我比較的兩個對象,一般會指向不同的位置。此外,我也無法比較引用的價值,因爲列表可能有多次出現的值。 那麼如何迭代List1的子列表呢?
好吧,所以如果我做一些像 last = List1.get(2),然後再比較最後一個迭代器,比如「while(current!= last)」,那麼比較應該比較我真正想要的兩個對象比較? – ptikobj 2010-12-16 15:27:58
我覺得有些東西我沒有意識到:如果你做了類似 對象a = b; 然後a將持有_reference_對象b,對吧? 因爲a擁有對b的引用,所以在(a!= current)時,我可以執行類似 的操作。 最初,我認爲a = b會將b的_object_或_value_賦值給a。但是,如果b是基元,則該值只會分配給a。如果b是一個對象,那麼a只會保持b的引用。 感謝您的所有答案,我想我現在明白了。 – ptikobj 2010-12-16 15:41:26
@ptikobj:該對象並沒有真正的名字。 「a」和「b」都不是「對象」。相反,* both *保存對該對象的引用,因此與'==' – 2010-12-16 15:47:25