@Override public boolean hasNext() { if(isLeader()) return it.hasNext(); if(isLast()) return buffer.size()>0 || it.hasNext(); if(it.hasNext()) return true; return counter < buffer.size(); }
@Override public boolean hasNext() { if(isLeader()) return it.hasNext(); if(isLast()) return buffer.size()>0 || it.hasNext(); if(it.hasNext()) return true; return counter < buffer.size(); }
@Override public T next() { if(!added){ this.leaderboard.add(this); added = true; } if(isLeader()){ return handleLeader(); } if(isLast()){ if(buffer.size()>0) return buffer.poll(); return it.next(); } if(counter< buffer.size()) return buffer.get(counter++); return handleLeader(); //exceed buffer, now leading }
@Override public T next() { if(!added){ this.leaderboard.add(this); added = true; } if(isLeader()){ return handleLeader(); } if(isLast()){ if(buffer.size()>0) return buffer.poll(); return it.next(); } if(counter< buffer.size()) return buffer.get(counter++); return handleLeader(); //exceed buffer, now leading }