Patrick Kwinten
Patrick Kwinten

Reputation: 2048

Java iterator get next within iterator possible?

I want to load from a array the entry before and after matching a condition. I tried an iterator but the next entry is always the same as the current entry. What am I misunderstanding?

public JsonJavaObject loadScoreboardPositions(String eventUnid, String runnerUnid){
        String methodName = new Object(){}.getClass().getEnclosingMethod().getName();       
        System.out.println(this.getClass().getSimpleName().toString() + " " + methodName);  
        JsonJavaObject positions = new JsonJavaObject();
        try {
            if (StringUtils.isNotBlank(eventUnid) && StringUtils.isNotBlank(runnerUnid)) {
                this.event = loadEvent(eventUnid);
                if (null != this.event) {
                    ArrayList<JsonJavaObject> scoreboard  = eventCrud.loadScoreboard(this.event);
                    int index = 1;
                    JsonJavaObject previousRunner = null;
                    JsonJavaObject nextRunner = null;
                    boolean nextRunnerCheck = false;
                    
                    ListIterator<JsonJavaObject> it = scoreboard.listIterator();                    
                    while (it.hasNext()) {
                        JsonJavaObject curr = it.next();
                        JsonJavaObject prev = it.previous();                        
                        System.out.println("current object = " + curr.toString());
                        System.out.println("previous object = " + prev.toString());
                        
                        if (curr.containsKey("runnerUnid")) {
                            System.out.println("runner = " + curr.getAsString("runnerUnid"));
                            if (runnerUnid.equalsIgnoreCase(curr.getAsString("runnerUnid"))) {
                                System.out.println("we have a match for " + runnerUnid);
                                utils.printToConsole("position in array = " + (index));
                                                                
                                positions.put("currentPosition", index);
                                positions.put("currentRunner", curr.getAsString("runnerUnid"));
                                
                                if (!curr.getAsString("runnerUnid").equalsIgnoreCase(prev.getAsString("runnerUnid"))) {
                                    positions.put("previousPosition", index-1);
                                    positions.put("previousRunner", prev.getAsString("runnerUnid"));
                                } else {
                                    System.out.println("prev euqlas current");
                                }
                                
                                if (it.hasNext()) {
                                    JsonJavaObject next = it.next();
                                    System.out.println("and the next = " + next.toString());
                                    positions.put("nextPosition", index+1);
                                    positions.put("nextRunner", next.getAsString("runnerUnid"));
                                }
                                
                                break;
                            }
                        }
                        index++;                        
                    }
                }               
            }
        } catch (Exception e) {
            XspOpenLogUtil.logErrorEx(e, JSFUtils.getXSPContext().getUrl().toString(), Level.SEVERE, null);
        }
        System.out.println("loadScoreboardPositions = " + positions.toString());
        utils.printToConsole("positions = " + positions);
        return positions;
    }

Upvotes: 0

Views: 56

Answers (0)

Related Questions