Mengenoperationen unter Java

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier mal ein kleines Beispiel für Mengenoperationen unter Java:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.HashSet;
import java.util.Set;

/**
 * @author Thomas.Darimont
 * 
 */
public class SetExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Set<Integer> setA = new HashSet<Integer>();
		Set<Integer> setB = new HashSet<Integer>();

		setA.add(2);
		setA.add(5);
		setA.add(8);
		setA.add(9);

		setB.add(5);
		setB.add(7);
		setB.add(8);

		System.out.println("Union: " + union(setA, setB));
		System.out.println("Minus: " + minus(setA, setB));
		System.out.println("Intersect: " + intersect(setA, setB));
		System.out.println("Complement: " + complement(setA, setB));
	}

	private static <TElement> Set<TElement> complement(Set<TElement> setA,
			Set<TElement> setB) {
		return minus(union(setA, setB), intersect(setA, setB));
	}

	private static <TElement> Set<TElement> intersect(Set<TElement> setA,
			Set<TElement> setB) {
		Set<TElement> set = new HashSet<TElement>(setA);
		set.retainAll(setB);
		return set;
	}

	private static <TElement> Set<TElement> minus(Set<TElement> setA,
			Set<TElement> setB) {
		Set<TElement> set = new HashSet<TElement>(setA);
		set.removeAll(setB);
		return set;
	}

	private static <TElement> Set<TElement> union(Set<TElement> setA,
			Set<TElement> setB) {
		Set<TElement> set = new HashSet<TElement>(setA);
		set.addAll(setB);
		return set;
	}
}

Ausgabe:
Code:
Union: [2, 5, 7, 8, 9]
Minus: [2, 9]
Intersect: [5, 8]
Complement: [2, 7, 9]

Gruß Tom
 
Könntest du mir mal bitte diesen Rückgabetypen erklären:

Java:
private static <TElement> Set<TElement>

Set vom typ TElement aber warum nochmal <TElement> davor?
 
Denn TElement gibt es ja eigentlich nicht. Würde man es also nicht noch einmal davor schreiben, würde der Compiler versuchen eine Klasse namens TElement zu suchen, statt es als generischen Typparameter zu erkennen.
 

Neue Beiträge

Zurück