Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public synchronized T next1() {
- ElementWrapper<T> ew = minHeap.remove();
- addNextElementFromCurrentIterator(ew);
- T currentElement = ew.getElement();
- while(nextElementHasTheSameKey(currentElement)) {
- ElementWrapper<T> nextEw = minHeap.remove();
- addNextElementFromCurrentIterator(nextEw);
- currentElement = merge.apply(currentElement, nextEw.getElement());
- }
- return currentElement;
- }
- @Override
- public T next2() {
- T currentElement;
- List<ElementWrapper> elementsWithTheSameKey = new LinkedList<>();
- synchronized (this) {
- ElementWrapper<T> ew = minHeap.remove();
- addNextElementFromCurrentIterator(ew);
- currentElement = ew.getElement();
- while (nextElementHasTheSameKey(currentElement)) {
- ElementWrapper<T> nextEw = minHeap.remove();
- addNextElementFromCurrentIterator(nextEw);
- elementsWithTheSameKey.add(nextEw);
- }
- }
- for(ElementWrapper<T> ew : elementsWithTheSameKey) {
- currentElement = merge.apply(currentElement, ew.getElement());
- }
- return currentElement;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement