2016-04-10 8 views
0

LinkedQueue varsa, geçerli nesnenin değerini bir sonraki nesneye, sonraki nesnenin sonraki değer nesnesine ... son eleman?Geçerli nesnenin Iterator tarafından sonraki nesnesine kopya değeri

Aşağıdaki kod, bununla çalışamaz gibi görünmektedir. Bir kerede listenizi iki nesneyi hareket edilecektir böylece iterator.next() diyoruz

LinkedDeque<Example> queue = new LinkedDeque<Example>(); 

Iterator<Example> iterator = queue.iterator(); 
while (iterator.hasNext()) 
{ 
    Example ex = iterator.next(); 
    int x = ex.getX(); 
    int y = ex.getY(); 
    Example exNext = iterator.next(); 
    exNext.set(x); 
    exNext.set(Y); 
} 
+0

değil bir yineleyici ile. Bu, LinkedDeque'in ne olduğuna bağlıdır. JDK’da böyle bir ders görmüyorum. – Vampire

+1

Bunu neden yapıyorsunuz? Yapılabilir olsa da, garip bir operasyon gibi görünüyor ve kesinlikle bir kuyruk ya da deque fikrine uyan bir şey değil. Senin gibi sesler * belki * sadece son elemanı kaldırmak ve ilk elemanın başka bir kopyasını ön tarafa ya da başka bir şeye eklemek istiyorum. – user2357112

+0

, ilk öğeyi almak, çoğaltmak ve kuyruğun ilkini eklemekle aynı şey değil mi? – KDaker

cevap

1

her şey, yineleyiciler endeksi artırılır. Yalnızca böyle iken döngü yineleme başına bir kez iterator.next() aradığınız böylece

bir önceki değişkeni tanıtan deneyin:

LinkedDeque<Example> queue = new LinkedDeque<Example>(); 

Iterator<Example> iterator = queue.iterator(); 
if(iterator.hasNext()) { 
    Example prev = iterator.next(); 

    while (iterator.hasNext()) 
    { 
     int x = prev.getX(); 
     int y = prev.getY(); 
     Example exNext = iterator.next(); 
     exNext.set(x); 
     exNext.set(Y); 
     prev = exNext; 
    } 
} 
+0

Muhtemelen bir sonraki öğenin değerlerini üzerine yazmadan önce kaydetmek isteyebilirsiniz. – user2357112

+0

Hala çalışmıyor ... sadece ilk bölüm kafadan geliyor, ancak bölümlerin geri kalanı hiç hareket etmiyor. – Matt

+0

Peki, bunun üzerinden hata ayıklayın. Buradaki kod, kendi sınıfınız uygun bir yineleyici döndürdüğü sürece iyi görünüyor. – Vampire