groovy-lecture/skript/datenstrukturen.md

2.8 KiB

Enums

Enums sind gleich wie in Java

enum Day{
	MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

Day today = Day.MONDAY

Man kann in Enums zusätzlich noch Eigenschaften und Methoden einbauen

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)

Ranges

Ähnlich wie in Ruby, jedoch nicht gleich

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
int[] intArray = new int[4];
intArray[2] = 2
println intArray // [0,0,2,0]

Lists

Listen sind geordnete Sammlungen von Elementen.

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.

def map = [name: "Peter", alter: 81]

Zugriff auf Map:

println map.name // "Peter"
println map["alter"] // 81

Hinzufügen von Schlüssel-Wert

map["Auto"] = "Bugatti"
println map["Auto"] // "Bugatti"

Entfernen von Elementen

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:

def emptyMap = [:]

* Clojure ist ein Codeblock, der lokal erstellt wird und Zugriff auf umgebende Variablen hat

Sets

Ungeordnete Sammlung von eindeutigen Elementen. (Keine Dubletten)

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:

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:

mySet.remove(1)
println mySet // [2,3,4,5,6,7]