[ voxi @ 02.03.2007. 15:57 ] @
Radim sa kolekcijama i sad sa LinkedList evo klase


Code:


/*
 * StekLifo.java
 *
 * Created on 02 March 2007, 15:30
 */

package MislitNaJavi.Kolekcije;
import java.util.*;
/**
 *
 * 
 */
public class StekLifo {
    LinkedList ls =new LinkedList();
    
    
    ListIterator lit=ls.listIterator();
     
    /** Creates a new instance of StekLifo */
    public StekLifo() {
    }
    
    public void prethodni(){
        
        if (lit.hasPrevious()==true)
           System.out.println("=> " + lit.previous()); 
       
    }
    
    public void sledeci(){
        
         
        if(lit.hasNext()==true)
            lit.next() ;        
         
    }
        
    public void setDodaj(Object ob){
         
        ls.addFirst(ob);             
    }
    
    public Object getFrst( ){ 
        
       return ls.getFirst();    
    }
    
    
   public Object obrisiPrvi(){
       
    return ls.removeFirst();   
   }
            
}


E sad ja prvo dodam 4 stringa i onda pozovem iz main f-ju sledeci i on mi javi gresku na
Code:

        lit.next() ;      


greska je sledeca

java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:548)
at java.util.LinkedList$ListItr.next(LinkedList.java:484)
at MislitNaJavi.Kolekcije.StekLifo.sledeci(StekLifo.java:34)
at MislitNaJavi.Kolekcije.MainList.main(MainList.java:33)
Exception in thread "main"


Ako neko zna gde sam pogresio neka mi javi

Hvala
[ Toxter @ 02.03.2007. 16:23 ] @
Moras ponovo da "dohvatis" iterator. Znaci ovako:
Code:
public void sledeci(){
  lit = ls.listIterator();

  if(lit.hasNext()==true)
    lit.next() ;        
}
[ radoica @ 02.03.2007. 16:49 ] @
Evo sta pise u dokumentaciji:

The iterators returned by the this class's iterator and listIterator methods are fail-fast: if the list is structurally modified at any time after the iterator is created, in any way except through the Iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException.

U prevodu: Ne smes da menjas listu (dodajes ili uklanjas elemente) POSLE kreiranja iteratora. Samo metodama samog iteratora (add i remove) je to dozvoljeno.

Ti si prvo krairao iterator, a zatim si pozivao metod liste koji dodaje nove elemente (ls.addFirst(ob) u metodu setDodaj(Object ob))
[ voxi @ 02.03.2007. 19:38 ] @
Hvala drugari na detaljnom i razumnom objasnjenu