Sets:Ein Set aus zwei verschiedenen bilden

Status
Nicht offen für weitere Antworten.

mamelinchen

Bekanntes Mitglied
Hallo!


Ich habe 3 Sets gebildet die alle unterschiedliche oder gleiche Elemente enthalten.

Nun soll ich aus 2 Sets ein eigenes Set bilden, bei den die Elemente gleichzeitig enthalten sind.
Nun weiss ich, es gibt die Methode retainALL(Collection <>a),
die verändert aber das vorangestellte Set.

Wie kann ich das vorangestellte Set behalten?

Wie kopier ich ein Set?
 
Zuletzt bearbeitet:
retainAll liefert dir doch die Schnittmenge..

Retains only the elements in this collection that are contained in the specified collection (optional operation). In other words, removes from this collection all of its elements that are not contained in the specified collection.
..

Returns:
true if this collection changed as a result of the call
 
Nun weiss ich, es gibt die Methode retainALL(Collection <>a), die verändert aber das vorangestellte Set.
Der Weg ist trotzdem richtig. Einfach eine Kopie erzeugen; könnte so aussehen:
Java:
final Set intersection = new HashSet(set1).retainAll(set2);
[SIZE="-1"]Generics hab ich mal weggelassen...[/SIZE]

Ebenius
 
Code:
final Set <Element> intersection = new
HashSet<Element>(e1).addAll(e2);

da meckert der Colmpiler:Set zu boolean umwandeln:bahnhof:
 
Ahso, verstehe. So sollte mein Quelltext eigentlich aussehen:
Java:
final Set intersection = new HashSet(set1);
intersection.retainAll(set2);
Ebenius
Ööh, Ebenius, was erzählst du denn da... Da könnte ja jemand auf die Idee kommen, alles untypisiert zu lassen und sich den einen oder den anderen Fuß wegzuschießen^^ Weiß man bei diesen Bytes ja nie so genau 😉
 
Jutti , also ich habe alle Sets mit seinen Eigenschaften.


Nun soll ich eine Ausgabe machen, die wie eine Tabelle aussieht,
bei der die Elemente ausgegeben werden, dazu ein Häkchen ob sie zum folgenden Set gehören, oder nicht.

In Form von:

Element ____ Set1_____ Set2______ Set1und2

Element 1 ____JA ______ NEIN ______NEIN
Element 2___ NEIN _______JA______ NEIN
Element 3_____JA________JA________JA
...


Wie könnt ich das am geschicktesten machen?
Also das er die Elemente vergleicht ob die zum Set gehören, und dann die Ausgabe(ja ||nein)
an die Stelle macht.

Habs mit for(Element el:set)
versucht, aber kam nix gescheites bei raus.Also jedenfalls nicht so, wie ich es in die Ausgabe der Elemente mit einbeziehe.
 
Zuletzt bearbeitet:
Ööh, Ebenius, was erzählst du denn da... Da könnte ja jemand auf die Idee kommen, alles untypisiert zu lassen und sich den einen oder den anderen Fuß wegzuschießen^^ Weiß man bei diesen Bytes ja nie so genau 😉
Hey - in den zwei Posts drüber hab ich extra darauf hingewiesen, dass ich die Generics ausgelassen habe.
  1. gehören die Parametrisierungen nicht wirklich zum Fragekontext und -- was viel wichtiger ist --
  2. ist die Parametrisierung der Eingangswerte (also der beiden Sets) nicht klar.
Wenn 2. nicht der Fall gewesen wäre, hätte ich die Typen schon mit reingepackt. 🙂

Nun soll ich eine Ausgabe machen, die wie eine Tabelle aussieht,
bei der die Elemente ausgegeben werden, dazu ein Häkchen ob sie zum folgenden Set gehören, oder nicht.
Du solltest wirklich Deine Fragen genauer formulieren. Was ist Dir nicht klar? Ein paar Hinweise pauschal:
  • Ich würde alle Eingangswerte in ein Set werfen:
    Java:
    final Collection union = new HashSet(set1);
    union.addAll(set2);
  • Dann über alle Werte in dem union-Set drüber gehen:
    Java:
    for (Object element : union) {
      // je eine Zeile hier ausgeben
    }
  • Mit Collection.contains(Object) kann man klasse prüfen, ob ein Wert in einem Set ist
  • Ausgaben kannst Du super mit System.out.printf(...) machen. Dabei hilft Dir die API-Doc:
Noch Fragen, Kienzle?

In meinen Quelltext-Beispielen habe ich absichtlich die Parametrisierung ausgelassen.

Ebenius
 
Habs geschaftt!

Nurn bissl ma Birne anstrengen und gleich losgetippelt und hat gleich gefunzt😉

Hab ne Methode geschrieben , die ein "X" zurückgibt, wenn das Element enthalten ist, und "-" wenn nicht.

Und dann bei out.println rufe ich die Methode auf😉

SORRY für die undeutliche Frage, nächste ma wirds besser😉

DANKE!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben