Iterator Pair<A,B> und Next

temp1

Grünschnabel
Hallo,

es gibt ein Pair<A,B> und zwei Iteratoren sollen durch A B iterieren.
Das Ergebnis soll sein x1 y1 x2 y2 x3 y3 x4 y4.
An den Signaturen soll nichts verändert werden.
Wie muss
Code:
public Pair<A, B> next() { }
definiert werden, damit das mit der Iteration funktioniert?
Mit it1.next und it2.next ? aber wie gebe ich dies dann in Pair<A,B> zurück?

Code:
import java.util.*;

public class PairIterable<A, B> implements Iterable<Pair<A,B>> {
	
	Pair<Iterable<A>, Iterable<B>> pair;
	
	public PairIterable(Iterable<A> it1, Iterable<B> it2){
		pair = new Pair<Iterable<A>, Iterable<B>>(it1,it2);	
	}

	public Iterator<Pair<A, B>> iterator() {
		return new MyIt();
	}
	
	
	public class MyIt implements Iterator<Pair<A, B>> {
			
		Iterator<A> it1 = pair.getFirst().iterator();
		Iterator<B> it2 = pair.getSecond().iterator();
		
		public boolean hasNext() {
			return it1.hasNext() || it2.hasNext();
		}

		public Pair<A, B> next() {
			
			return null;
		}

		public void remove() {	
			throw new UnsupportedOperationException();
		}
		
	}
	
	public static void main(String[] args) {
		
		List<String> listA = new ArrayList<>();
		listA.add("x1");listA.add("x2");listA.add("x3");listA.add("x4");
		
		List<String> listB = new ArrayList<>();
		listB.add("y1");listB.add("y2");listB.add("y3");listB.add("y4");
		
		for (Pair<String, String> s:new PairIterable<>(listA,listB)){
			System.out.println(s);
		}
		
	}
}
 
Zuletzt bearbeitet:
so konnte das Problem gelöst werden.
Code:
public Pair<A, B> next() {
           return new Pair<A,B>(it1.next(),it2.next());
}
 
Zurück