groovy-lecture/skript/Datenstrukturen.md

152 lines
2.8 KiB
Markdown
Raw Normal View History

2024-05-30 15:13:19 +02:00
### Enums
Enums sind gleich wie in Java
```Groovy
enum Day{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Day today = Day.MONDAY
```
Man kann in Enums zusätzlich noch Eigenschaften und Methoden einbauen
```Groovy
enum Day{
MONDAY("First Day of the Week"),
TUESDAY("Second Day of the Week),
//...
final String description
Day(String description){
this.description = description
}
String getDescription(){
return description
}
}
Day today = Day.FRIDAY
def description = today.getDescription
println("Today is $today: $description")
```
Zusätzlich dazu kann man auch Methoden überschreiben (z.B. toString()-Methode)
2024-05-20 16:11:35 +02:00
### Ranges
Ähnlich wie in Ruby, jedoch nicht gleich
```Groovy
1..10 // Inklusive 10
1..<10 // Exklusive 10
'a'..'x' // Kann auch aus Character bestehen
10..1 // Kann auch absteigende Reihenfolge haben
'x'..'a' // Character können auch absteigende Reihenfolge haben
```
Nützliche Methoden auf Ranges:
- contains()
- get()
- getFrom()
- getTo()
- isReverse()
- size()
- subList()
### Arrays
- von allen Typen können Arrays erstellt werden
- Größe muss angegeben werden, sind nicht dynamisch
```Groovy
int[] intArray = new int[4];
intArray[2] = 2
println intArray // [0,0,2,0]
```
### Lists
Listen sind geordnete Sammlungen von Elementen.
```Groovy
def list = [0,1,2,3]
println list // [0,1,2,3]
println list[0] // [0]
list << 4 // Hinzufügen eins Elements am Ende der Liste
println list // [0,1,2,3,4]
list.add(0,20) // [Index, Wert]
println list // [20,0,1,2,3,4]
```
### Maps
Eine Map ist eine ungeordnete Collection von Objekt-Referenzen.
```Groovy
def map = [name: "Peter", alter: 81]
```
Zugriff auf Map:
```Groovy
println map.name // "Peter"
println map["alter"] // 81
```
Hinzufügen von Schlüssel-Wert
```Groovy
map["Auto"] = "Bugatti"
println map["Auto"] // "Bugatti"
```
Entfernen von Elementen
```Groovy
def map [hello: "World", erde: "Rund", eins: "Zwei"]
println map // [hello: "World", erde: "Rund", eins: "Zwei"]
def newMap = map.minus([hello: "World"])
println newMap // [erde: "Rund", eins: "Zwei"]
```
Die `minus()`Methode nimmt eine Map als Argument und gibt eine neue Map, mit den entfernten Schlüssel-Wert Paaren zurück
-----Man kann auch Closure* benutzen----
Eine leere Map wird wie folgt definiert:
```Groovy
def emptyMap = [:]
```
\* Clojure ist ein Codeblock, der lokal erstellt wird und Zugriff auf umgebende Variablen hat
### Sets
Ungeordnete Sammlung von eindeutigen Elementen.
(Keine Dubletten)
```Groovy
def mySet = [1,1,1,2,3,3,4,5,5,5,5] as Set
println mySet //[1,2,3,4,5]
```
Hinzufügen eines Elements:
```Groovy
mySet << 6
println mySet // [1,2,3,4,5,6]
// oder
mySet.add(7)
println mySet // [1,2,3,4,5,6,7]
```
Entfernen eines Elements:
```Groovy
mySet.remove(1)
println mySet // [2,3,4,5,6,7]
2024-05-30 15:13:19 +02:00
```