Fragen zu Set / Relationen verknüpfen

Tauber

Mitglied
Hey Leute,

wir haben eine neue Aufgabe bekommen. Nämlich soll aus der Relation {(1,2), (2,3) (3,4)} und der Relation {(2,1), (4,6), (4,5)} folgendes gebildet werden: {(1,1), (1,2), (2,1), (2,2)}

Schön, da dachte ich mir ich durchlaufe beide Relationen. Aber wie ist das möglich? Wir haben folgendes bekommen:

Java:
public static class Paar implements Comparable<Paar> {
		private int left;
		private int right;

		public Paar(int left, int right) {
			this.left = left;
			this.right = right;
		}
		public int getLeft() {
			return left;
		}
		public int getRight() {
			return right;
		}
		
		@Override
		public boolean equals (Object o) {
			if (o == null) { return false; }
			if (this == o) { return true; }
			if (! (o instanceof Paar)) {
				return false;
			}
			Paar that = (Paar) o;
			return this.left == that.left && this.right == that.right;
		}
		
		@Override
		public int compareTo(Paar that) {
			int v1 = this.left - that.left;
			return v1 != 0 ? v1 : this.right - that.right;
		}
		
		@Override
		public String toString() {
			return "(" + left + ", " + right + ")";
		}
		
		
	}

	private Set<Paar> pairSet = new TreeSet<>();
	
	/**
	 * Erzeuge eine leere Relation. 
	 * @param s
	 */
	public Relation() {
		pairSet = new TreeSet<Paar>();
	}
	
	/**
	 * Erzeugt eine Relation aus einer Paarmenge.
	 * @param s die Paarmenge
	 */
	private Relation(Set<Paar> s) {
		pairSet = new TreeSet<Paar>(s);
	}
	
	/**
	 * Erweitert eine Relation um ein weiteres Paar.
	 * @param p das Paar.
	 * @return die Relation selbst
	 * @post this ist um p erweitert
	 */
	public Relation add(Paar p) {
		pairSet.add(p);
		return this;
	}
	
	@Override
	public String toString() {
		return pairSet.toString();
	}
	
	@Override
	public boolean equals(Object o) {
		if (o == null) { return false; }
		if (this == o) { return true; }
		if (!(o instanceof Relation)) { return false; }
		Relation that = (Relation) o;
		return this.pairSet.equals(that.pairSet);
	}
	
	
	/**
	 * Berechnet die Verknuepfung dieser mit einer anderen Relation.
	 * @param that die andere Relation
	 * @return this kringel that
	 */
	public Relation kringel(Relation that) {
		for (pairSet : getRight())
		}
		// TODO implementieren
		return null;
	}

und kringel soll eben das ganze berechnen. Nur komme ich irgendwie nicht klar, wie ich dort denn auf die erste und auf die zweite Relation überhaupt zugreifen kann. Das left und right steht wohl für x und y des jeweiligen Paares? Aber this.yyy und that.yyy verwirren mich etwas. Was hat das ganze zu bedeuten?
 
Ich habe zwei Sets:

In Set 1 drin:
(1, 3)
(1, 2)

In Set 2 drin:
(2, 1)
(2, 3)

Nun möchte ich beide Sets vergleichen und schauen, ob ein Paar vom ersten Set Beispiel hier (1, 2) umgekehrt im zweiten Set zu finden ist also (2, 1). Wenn das der Fall ist, sollen beide Paare in einem neuen Set hinzugefügt werden und da soll dann zusätzlich noch (1, 1) und (2, 2) rein. Weil es diese Zahlen in dem Set gibt.

Set Endergebnis:
(1, 2)
(2, 1)
(1, 1)
(2, 2)

Ich dachte mir, ich durchlaufe jedes Paar im ersten Set und vergleiche jedes Paar vom ersten Set mit jedem Paar vom zweiten Set. Allerdings wie mache ich das?
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben