Difference between revisions of "Java - Datenstrukturen"

From Coders.Bay Wiki
Jump to navigation Jump to search
 
(23 intermediate revisions by 8 users not shown)
Line 2: Line 2:
===Datenstrukturen===
===Datenstrukturen===
====Aufgabe: Mengenlehre====
====Aufgabe: Mengenlehre====
Gegeben sind drei Zahlenmengen A, B, C - realisiert als Arrays vom Typ Integer:
Gegeben sind drei Zahlenmengen A, B, C.
  A = { 49, 30, 14, 47, 13, 2, 12, 29, 19, 11, 15, 39, 43, 45, 34 }
  A = { 1, 3, 5 }
  B = { 39, 33, 38, 14, 4, 32, 40, 25, 17, 46, 35, 6, 2, 12, 49 }
  B = { 3, 5, 7 }
  C = { 41, 12, 5, 35, 42, 28, 47, 20, 26, 24, 50, 40, 14, 17, 10 }
  C = { 5, 7, 9 }
Berechne möglichst effizient die Vereinigungsmenge von A ∪ B ∪ C sowie alle möglichen Schnittmengen und Differenzmengen der drei Zahlenmengen. Du kannst
 
davon ausgehen, dass alle Mengen gleich groß sind. Gestalte deine Methoden mit dem fluent-interfacefluent-interface. Das heißt, dass alle Methoden zur Berechnung dieser
Berechne möglichst effizient die Vereinigungsmenge von A ∪ B ∪ C sowie alle möglichen Schnittmengen und Differenzmengen der drei Zahlenmengen. Du kannst davon ausgehen, dass alle Mengen gleich groß sind.  
Verknüpfungen den selben return Typ haben sollen wie die Parameter.
 
getUnionList(a, getIntersectionList(b,c)); // das sollte funktionieren und heißt A ∪ (B ∩ C)
Verwende dazu die bereits vorhandene Klasse "HashSet" und deren Methoden. Du sollst die Logik, wie sich z.B. eine Vereinigungsmenge bildet NICHT selbst programmieren. Die Klasse HashSet kann das schon.
OptionalOptional Erweitere deine Methoden so, dass getUnionList und getIntersectionList mit 1-n parametern aufgerufen werden können. Das Keyword für die Google-Suche
 
lautet "params"^^
Gestalte deine Methoden so, dass sie zur Berechnung der Ergebnismenge den selben return Typ haben wie die Parameter.
Dadurch können die Methodenaufrufe beliebig oft geschachtelt werden.
 
z.B.: getUnionList(a, getIntersectionList(b,c)); // das sollte funktionieren und heißt A ∪ (B ∩ C)<br>


====Aufgabe: Wörterbuch====
====Aufgabe: Wörterbuch====
Erstelle ein Programm welches ein Wörterbuch zum Übersetzen von Wörtern zwischen Englisch und Deutsch implementiert (bi-direktional). Es soll folgende
Erstelle ein Programm welches ein Wörterbuch zum Übersetzen von Wörtern zwischen Englisch und Deutsch implementiert (bi-direktional). Es soll folgende
Funktionalitäten umfassen: - Hinzufügen eines neuen Wort-Paars (Englisch und Deutsch) - Entfernen eines Wort-Paars aus dem Wörterbuch
Funktionalitäten umfassen:
* Hinzufügen eines neuen Wort-Paares (Englisch und Deutsch)
* Entfernen eines Wort-Paares aus dem Wörterbuch
* Suchen der Übersetzung eines Wortes (in beide Richtungen)<br>
 
Um diese Aufgabe zu lösen ist das '''Map''' Interface gut geeignet.


====Aufgabe: Liste sortieren====
====Aufgabe: Liste sortieren====
Wähle einen der bereits mit Arrays implementierten Sortieralgorithmus und ändere die Implementation derart, dass statt Arrays Listen verwendet werden. Wichtig: Es
Wähle einen der bereits mit Arrays implementierten Sortieralgorithmus und ändere die Implementation derart, dass statt Arrays Listen verwendet werden. Wichtig: Es
soll NICHT die eingebaute Sortierfunktion des Listen Interface, sondern euer eigener Algorithmus verwendet werden.
soll NICHT die eingebaute Sortierfunktion des Listen Interface, sondern euer eigener Algorithmus verwendet werden.
====Entwurfsmuster / Design Patterns====
Weitere Informationen zu Entwurfsmustern findet ihr hier:
https://refactoring.guru/design-patterns
https://sourcemaking.com/design_patterns
====Anwendungen von Datenstrukturen====                                                                                                                                 
https://www.youtube.com/watch?v=ouipSd_5ivQ

Latest revision as of 11:44, 24 January 2024

Tag 1[edit]

Datenstrukturen[edit]

Aufgabe: Mengenlehre[edit]

Gegeben sind drei Zahlenmengen A, B, C.

A = { 1, 3, 5 }
B = { 3, 5, 7 }
C = { 5, 7, 9 }

Berechne möglichst effizient die Vereinigungsmenge von A ∪ B ∪ C sowie alle möglichen Schnittmengen und Differenzmengen der drei Zahlenmengen. Du kannst davon ausgehen, dass alle Mengen gleich groß sind.

Verwende dazu die bereits vorhandene Klasse "HashSet" und deren Methoden. Du sollst die Logik, wie sich z.B. eine Vereinigungsmenge bildet NICHT selbst programmieren. Die Klasse HashSet kann das schon.

Gestalte deine Methoden so, dass sie zur Berechnung der Ergebnismenge den selben return Typ haben wie die Parameter. Dadurch können die Methodenaufrufe beliebig oft geschachtelt werden.

z.B.: getUnionList(a, getIntersectionList(b,c)); // das sollte funktionieren und heißt A ∪ (B ∩ C)

Aufgabe: Wörterbuch[edit]

Erstelle ein Programm welches ein Wörterbuch zum Übersetzen von Wörtern zwischen Englisch und Deutsch implementiert (bi-direktional). Es soll folgende Funktionalitäten umfassen:

  • Hinzufügen eines neuen Wort-Paares (Englisch und Deutsch)
  • Entfernen eines Wort-Paares aus dem Wörterbuch
  • Suchen der Übersetzung eines Wortes (in beide Richtungen)

Um diese Aufgabe zu lösen ist das Map Interface gut geeignet.

Aufgabe: Liste sortieren[edit]

Wähle einen der bereits mit Arrays implementierten Sortieralgorithmus und ändere die Implementation derart, dass statt Arrays Listen verwendet werden. Wichtig: Es soll NICHT die eingebaute Sortierfunktion des Listen Interface, sondern euer eigener Algorithmus verwendet werden.

Entwurfsmuster / Design Patterns[edit]

Weitere Informationen zu Entwurfsmustern findet ihr hier: https://refactoring.guru/design-patterns https://sourcemaking.com/design_patterns

Anwendungen von Datenstrukturen[edit]

https://www.youtube.com/watch?v=ouipSd_5ivQ