1. #1
    TiZon's Avatar
    Registered
    14/12/05
    Location
    Dilbeek
    Posts
    10,473
    iTrader
    20 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/40

    Java: Probleem met ListIterator

    Hey

    Ik heb een stukje in mijn DomeinBeheerder die vragen moet aanlever op aanvraag van een (niet verder bepaalde) GUI.

    Ik werk als volgt:
    Code:
    	private Vraag huidigeVraag;
    	private List<Vraag> vragen;
    	private ListIterator<Vraag> vragenIterator;
    
    ....
    
    public Vraag getVorigeVraag() {
    		if(vragen == null)
    			vragen = getVragen();
    		if(vragenIterator == null)
    			vragenIterator = vragen.listIterator();
    		if(vragenIterator.hasPrevious())
    			huidigeVraag = vragenIterator.previous();
    		
    		return huidigeVraag;
    	}
    	
    	public Vraag getVolgendeVraag() {
    		if(vragen == null)
    			vragen = getVragen();
    		if(vragenIterator == null)
    			vragenIterator = vragen.listIterator();
    		if(vragenIterator.hasNext())
    			huidigeVraag = vragenIterator.next();
    		return huidigeVraag;
    	}
    Nu, als ik altijd de volgende neem, geen probleem. Als ik altijd de vorige neem, geen probleem.

    Als ik echter wissel tussen vorige en volgende krijg ik eerst nog 1x het oude object terug.

    Voorbeeld:
    Code:
    public StartUp()
    	{
    	//	(new HoofdFrame(new DomeinController())).setVisible(true);	
    		vraag = new ObservableString();
    		vraag.addObserver(this);
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVolgendeVraag().getVraagTekst());
    		vraag.setString(DomeinBeheerder.getInstance().getVorigeVraag().getVraagTekst());
    		
    	}
    	
    	public void update(Observable o, Object arg){
    		System.out.println(vraag.toString());
    	}
    (deze klasse is een Observer en de String is Observable, vandaar dat de 'update'.

    Geeft dit terug:

    1. Hoe groot is je huis?
    2. Hoeveel mensen wonen er in je huis?
    3. Wat eet je thuis?
    4. Hoe vaak eet je vlees of vis?
    5. Welke brandstof gebruikt je verwarming?
    6. Voor welke afsand gebruikt je gezin gemiddeld de auto?
    7. Hoe vaak maakt je gezin gebruik van het openbaar vervoer?
    8. Waar breng je je vakantie door?
    9. Hoe vaak gebruik je zuivel?
    10. Let je erg op uw elektriciteitsvebruik?
    10. Let je erg op uw elektriciteitsvebruik?
    10. Let je erg op uw elektriciteitsvebruik?
    10. Let je erg op uw elektriciteitsvebruik?
    10. Let je erg op uw elektriciteitsvebruik?


    De laatste zou dus terug 9 moeten zijn, maar dat doet het niet...

    Iemand een idee?


    Alvast Bedankt!


    Bart
    PSN:TiZon Website Facebook Gallery YouTube Last.fm Twitter
    no votes  

  2. #2
    forloRn_'s Avatar
    Registered
    23/11/03
    Location
    Landeurp
    Posts
    1,791
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    10/17
    Java API to the rescue.

    De iterator wijst niet naar een element, maar naar een plaats tussen de elementen.

    Als je tien elementen hebt, en je doet tien keer next(), dan wijst hij naar het plaatsje net ná het tiende element. Hij kan niet tussen negen en tien blijven staan, want dan zou next() keer op keer hetzelfde element teruggeven, en dan is je collection zogezegd oneindig lang. Als je erna previous() doet, geeft hij het element net vóór de iterator terug, en dat is weer het laatste, niet het voorlaatste.
    no votes  

  3. #3
    TiZon's Avatar
    Registered
    14/12/05
    Location
    Dilbeek
    Posts
    10,473
    iTrader
    20 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/40
    Heb het object vergeleken met het vorige nu, als het gelijk is (equals() uitgeschreven voor mijn vraag) neem ik nogmaals de vorige/volgende van de listItt.

    Ideaal :-)

    Bedankt!
    PSN:TiZon Website Facebook Gallery YouTube Last.fm Twitter
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in