Meta tags:
description= TreeMap in Java nutzt einen Rot-Schwarz-Baum für sortierte Schlüssel-Wert-Zuordnungen mit NavigableMap-API.;
Headings (most frequently used words):
treemap, was, die, java, eine, ist, zwei, arten, schlüsselreihenfolge, festzulegen, navigablemap, api, sub, map, ansichten, sind, live, null, wird, bei, schlüsseln, abgelehnt, wann, man, wählt, ein, ausgearbeitetes, beispiel, terminplanung, bereichsabfragen, comparator, schlüsselung, als, nächstes, kommt, übungen,
Text of the page (most frequently used words):
die (36), #treemap (33), string (32), der (28), ist (25), map (24), java (22), das (21), put (21), schlüssel (20), und (19), einführung (18), eine (16), lernen (15), schedule (15), system (13), out (13), integer (12), println (12), was (11), comparator (11), sie (11), klasse (11), uhr (10), new (10), null (8), bei (8), gibt (8), hashmap (8), ansicht (8), html (7), morning (7), aus (7), jdbc (7), collections (7), streams (7), klassen (7), alle (6), für (6), code (6), tools (6), ein (6), man (6), wird (6), navigablemap (6), api (6), next (6), zurück (6), nicht (6), einer (6), annotationen (6), and (6), methoden (6), thread (6), interface (6), arrays (6), w3docs (5), über (5), json (5), übungen (5), als (5), sub (5), ansichten (5), sind (5), live (5), zwei (5), einen (5), mit (5), wert (5), oder (5), eintrag (5), des (5), nach (5), auf (5), treeset (5), sortieren (5), array (5), formatter (5), color (5), generator (4), bereichsabfragen (4), linkedhashmap (4), floorkey (4), wenn (4), einem (4), warum (4), dem (4), auch (4), pollfirstentry (4), coffee (4), den (4), design (4), vor (4), von (4), headmap (4), the (4), kopieren (4), comparable (4), strings (4), maven (4), junit (4), dateien (4), interfaces (4), schleife (4), operatoren (4), encoder (3), editor (3), quizze (3), php (3), javascript (3), css (3), kommt (3), schlüsselung (3), schlüsseln (3), this (3), hashtable (3), vorhanden (3), eingefügt (3), gleich (3), sich (3), wie (3), kann (3), case (3), einzigen (3), ursprünglichen (3), gleichheit (3), equals (3), nächste (3), ereignis (3), wir (3), ursprüngliche (3), review (3), class (3), key (3), int (3), now (3), view (3), range (3), while (3), case_insensitive_order (3), schnellen (3), sortierte (3), benötigen (3), iteration (3), keine (3), erste (3), mid (3), submap (3), durchsuchen (3), reverse (3), strictly (3), hash (3), zahlen (3), lesen (3), lebenszyklus (3), xml (3), regex (3), syntax (3), pattern (3), switch (3), schlüsselwort (3), module (3), erstellen (3), italiano (2), português (2), español (2), français (2), русский (2), deutsch (2), english (2), beautifier (2), diff (2), password (2), python (2), git (2), bücher (2), snippets (2), seit (2), nächstes (2), ausgearbeitetes (2), beispiel (2), terminplanung (2), wann (2), wählt (2), abgelehnt (2), arten (2), schlüsselreihenfolge (2), festzulegen (2), page (2), prüfen (2), enthält (2), tree (2), vier (2), diesen (2), existiert (2), fast (2), wahl (2), insensitive (2), zweiten (2), einfache (2), priorityqueue (2), außerhalb (2), bereichs (2), midnight (2), zum (2), liegt (2), infrage (2), log (2), lowerentry (2), ceilingentry (2), terminplan (2), reihenfolge (2), ohne (2), import (2), public (2), static (2), main (2), with (2), format (2), 02d (2), entry (2), queue (2), time (2), order (2), getkey (2), value (2), verwendet (2), geordnet (2), navigations (2), verwenden (2), ende (2), sortiert (2), implementieren (2), denselben (2), zwischen (2), ihnen (2), schlüsseltyp (2), zugriff (2), grund (2), löst (2), compareto (2), updated (2), throw (2), true (2), änderungen (2), bereich (2), tailmap (2), logarithmische (2), operation (2), keys (2), implementiert (2), bietet (2), operationen (2), dessen (2), natürliche (2), ordnung (2), typen (2), vergleichen (2), schreiben (2), rot (2), schwarz (2), baum (2), arraylist (2), unveränderlichkeit (2), namenskonventionen (2), best (2), practices (2), gradle (2), build (2), testing (2), collection (2), stack (2), memory (2), jvm (2), function (2), concurrency (2), virtual (2), threads (2), vertieft (2), sealed (2), records (2), modern (2), parser (2), url (2), networking (2), konstruktoren (2), aufrufen (2), objekte (2), reflection (2), benutzerdefinierte (2), eingebaute (2), join (2), framework (2), variablen (2), multithreading (2), intro (2), date (2), datum (2), file (2), functional (2), ausdrücke (2), programming (2), type (2), generic (2), classes (2), generics (2), exceptions (2), exception (2), try (2), catch (2), pakete (2), packages (2), object (2), verschachtelte (2), method (2), schleifen (2), for (2), 2026, rechte, vorbehalten, entwickler, gemacht, sprache, datenschutzrichtlinie, kontakt, uns, unternehmen, probier, üben, kostenlose, tutorials, beispiele, web, 2014, previous, yes, helpful, nur, exakt, zurückgegeben, kleinste, größer, größte, kleiner, übung, modernen, implementierungen, bevorzugenden, neuem, noch, weitere, jdk, all, vorausgeht, gelegentlich, altem, sehen, lohnt, wissen, heute, immer, falsche, ersetzen, concurrenthashmap, kollabierte, aber, puts, hat, wiederholt, anstehende, entnommen, prioritätswarteschlange, lookups, benötigt, echte, leisten, erschien, darin, nachdem, hatten, hätten, hätte, ignoriert, snack, haben, zeitpunkt, abgefragt, nächsten, mittagessen, daher, jüngsten, strikt, beide, chronologischer, ausgegeben, explizite, sortierung, hinzufügen, ordnete, automatisch, richtigen, stelle, durchlauf, mitnehmen, sollte, util, treemapshowcase, void, args, keyed, minutes, since, standup, lunch, team, demo, ship, sorted, foreach, nat, event, most, recent, past, slice, false, nmorning, falls, after, adding, reflects, priority, like, draining, ndraining, isempty, getvalue, equality, trap, says, equal, overwrites, keeps, original, ncase, run, editable, runs, server, folgende, programm, kleinen, modellieren, minuten, mitternacht, demonstriert, alles, zeigt, enthüllt, gleichheitsfalle, insensitiven, nützliches, muster, dann, einmalig, darzustellen, schnell, aufbauen, präsentieren, aufbau, vertrag, sodass, wechsel, regel, einzeilige, konstruktoränderung, schneller, natur, enummap, enum, einfügereihenfolge, gewinnt, egal, einzige, entscheidungsablauf, kein, sein, demselben, ablehnt, sinnvolle, möglichkeit, aufzurufen, werte, jedoch, zulässig, nullpointerexception, would, geben, kopien, vorgenommen, werden, wirken, fallen, erscheinen, erzwingen, versuch, einzufügen, bleibt, bereichsbegrenzte, mutationen, während, durchlaufs, sicher, illegalargumentexception, finde, lautet, suche, dieselbe, müsste, jeden, 9am, lastentry, descendingmap, ceilingkey, greater, higherkey, less, lowerkey, removes, firstentry, lastkey, firstkey, schnittstelle, viele, gilt, einstuft, kollabieren, zweite, überschreibt, führt, einsetzen, anschließend, nie, versehen, möchte, rückgabewert, bestimmt, reverseorder, bynameci, sensitive, natural, byname, ihn, diese, ihren, anforderungen, entspricht, siehe, unterschiede, beiden, konstruktor, übergeben, numerische, wrapper, datumstypen, eigene, kommen, record, muss, irgendwie, dafür, möglichkeiten, dabei, ertappen, funktion, einträge, signal, dass, anfang, richtige, typ, gewesen, wäre, ihre, hält, intern, selbstbalancierenden, binären, suchbaum, zugrunde, jede, letzte, preis, komplexität, floor, ceiling, lower, higher, head, tail, absteigende, nichts, davon, tabelle, vollständiges, möglich, remove, get, nutzt, zuordnungen, formatieren, liste, duplikate, entfernen, ausgeben, substring, länge, datei, zeilenweise, iterieren, umkehren, wörter, zählen, addieren, how, sicherheitspraktiken, performance, tipps, patterns, solid, prinzipien, clean, coding, konventionen, skript, abhängigkeiten, pom, mockito, parametrisierte, tests, assertions, flags, zeichenklassen, quantifizierer, gruppen, captures, matcher, regular, expressions, referenztypen, loading, jit, kompilierung, algorithmen, garbage, heap, model, architektur, management, foreign, structured, types, tief, matching, text, blocks, var, features, jaxb, sax, dom, gson, jackson, metadata, batch, verarbeitung, transaktionen, resultset, callablestatement, preparedstatement, statement, verbindung, treiber, databases, inetaddress, datagramsocket, serversocket, sockets, httpclient, httpurlconnection, urlconnection, migration, modul, services, modultypen, moduldeklaration, platform, dynamic, proxies, felder, untersuchen, annotation, processing, meta, annotations, concurrent, fork, completablefuture, callable, future, executor, pools, readwritelock, reentrantlock, locks, atomare, volatile, deadlock, inter, komm, synchronized, blöcke, synchronisierung, priorität, runnable, calendar, legacy, temporal, adjusters, parsing, datumsformatierung, period, duration, instant, zoneddatetime, localdatetime, localtime, localdate, zeit, dateibaum, durchlaufen, files, path, nio, überblick, deserialisierung, serialisierung, printstream, scanner, printwriter, data, buffered, character, byte, löschen, binaryoperator, consumer, supplier, predicate, optional, parallele, collectors, terminaloperationen, intermediate, ops, methodenreferenzen, built, lambda, funktionale, programmierung, unmodifiable, listiterator, iteratoren, properties, linkedhashset, hashset, set, deque, arraydeque, vector, linkedlist, list, einschränkungen, erasure, wildcards, begrenzte, generische, split, konvertierungen, stringtokenizer, vergleich, formatierung, stringbuffer, stringbuilder, pool, depth, hierarchie, checked, unchecked, throws, resources, finally, multiple, handling, classpath, imports, singleton, unveränderliche, klonen, tostring, hashcode, instanceof, enums, lokale, anonyme, innere, default, abstrakte, abstraktion, overriding, polymorphismus, super, vererbung, getters, setters, kapselung, final, non, access, modifier, zugriffsmodifikatoren, klassenmethoden, klassenattribute, oop, konzepte, oriented, methode, varargs, pass, variablenbereich, rekursion, overloading, methodenparameter, methods, mehrdimensionale, labeled, statements, continue, break, each, ternary, operator, else, control, flow, benutzereingabe, math, zeichen, booleans, sonderzeichen, verkettung, bitweise, logische, vergleichsoperatoren, zuweisungsoperatoren, arithmetische, casting, datentypen, kommentare, ausgabe, basics, kompilieren, ausführen, hello, world, umgebung, einrichten, installieren, getting, started, anmelden, formatters, sha256, md5, length, calculator, colors, hsl, hex, mixer, converter, picker, general, kurse, learn,
Text of the page (random words):
tools color picker color converter color mixer color hex colors hsl alle 10 string tools string length calculator md5 hash generator sha256 hash generator string reverse url encoder alle 19 code formatters javascript formatter css formatter html formatter json formatter php formatter w3docs durchsuchen k de english en deutsch de русский ru français fr español es português pt italiano it anmelden java lernen getting started einführung java installieren umgebung einrichten hello world kompilieren ausführen java syntax basics syntax ausgabe kommentare variablen namenskonventionen datentypen type casting operatoren arithmetische operatoren zuweisungsoperatoren vergleichsoperatoren logische operatoren bitweise operatoren strings string methoden string verkettung sonderzeichen zahlen booleans zeichen math klasse benutzereingabe control flow if else ternary operator switch switch ausdrücke while schleife do while schleife for schleife for each schleife break continue verschachtelte schleifen labeled statements arrays arrays array schleifen mehrdimensionale arrays array operationen arrays klasse arrays sortieren arrays kopieren methods methoden methodenparameter method overloading rekursion variablenbereich pass by value varargs main methode object oriented programming oop konzepte klassen objekte klassenattribute klassenmethoden konstruktoren this schlüsselwort zugriffsmodifikatoren non access modifier static final kapselung getters setters vererbung super schlüsselwort polymorphismus method overriding abstraktion abstrakte klassen interfaces default methoden verschachtelte klassen innere klassen anonyme klassen lokale klassen enums records sealed classes instanceof object klasse equals hashcode tostring klonen unveränderliche klassen singleton pattern packages imports packages import pakete erstellen eingebaute pakete classpath exception handling exceptions try catch multiple catch finally try with resources throw throws checked vs unchecked exception hierarchie benutzerdefinierte exceptions best practices strings in depth string klasse string pool string unveränderlichkeit stringbuilder stringbuffer string formatierung string vergleich stringtokenizer string konvertierungen split join generics generics einführung generic classes generische methoden generic interfaces begrenzte typen wildcards type erasure einschränkungen collections framework collections einführung collection interface list interface arraylist linkedlist vector stack queue interface priorityqueue arraydeque deque interface set interface hashset linkedhashset treeset map interface hashmap linkedhashmap treemap hashtable properties iteratoren listiterator comparable comparator collections klasse collections sortieren collections durchsuchen unmodifiable collections functional programming funktionale programmierung lambda ausdrücke functional interfaces built in interfaces methodenreferenzen streams einführung streams erstellen intermediate ops terminaloperationen collectors parallele streams optional predicate function consumer supplier binaryoperator file and i o i o einführung file klasse dateien erstellen dateien lesen dateien schreiben dateien löschen byte streams character streams buffered streams data streams printwriter scanner printstream serialisierung deserialisierung nio überblick path klasse files klasse dateibaum durchlaufen date and time datum zeit intro localdate localtime localdatetime zoneddatetime instant duration period datumsformatierung datum parsing temporal adjusters legacy date calendar multithreading and concurrency multithreading intro thread klasse runnable thread lebenszyklus thread methoden thread priorität synchronisierung synchronized blöcke inter thread komm deadlock volatile atomare variablen locks reentrantlock readwritelock thread pools executor framework callable future completablefuture fork join concurrent collections virtual threads annotations annotationen einführung eingebaute annotationen meta annotationen benutzerdefinierte annotationen annotation processing reflection reflection einführung class objekte felder untersuchen methoden aufrufen konstruktoren aufrufen annotationen lesen dynamic proxies java platform module system module einführung moduldeklaration modultypen modul services module migration networking networking einführung url klasse urlconnection httpurlconnection httpclient sockets serversocket datagramsocket inetaddress jdbc and databases jdbc einführung jdbc treiber jdbc verbindung jdbc statement preparedstatement callablestatement resultset jdbc transaktionen batch verarbeitung jdbc metadata json and xml json einführung jackson gson xml einführung dom parser sax parser jaxb modern java features var schlüsselwort text blocks pattern matching switch modern records vertieft sealed types tief virtual threads vertieft structured concurrency foreign function api jvm and memory management jvm architektur memory model stack vs heap garbage collection gc algorithmen jit kompilierung class loading referenztypen regular expressions regex einführung pattern matcher regex syntax gruppen captures quantifizierer zeichenklassen regex flags testing testing einführung junit einführung junit annotationen junit assertions junit lebenszyklus parametrisierte tests mockito build tools maven einführung maven pom xml maven abhängigkeiten maven lebenszyklus gradle einführung gradle build skript best practices coding konventionen namenskonventionen clean code solid prinzipien design patterns einführung unveränderlichkeit performance tipps sicherheitspraktiken java how to zwei zahlen addieren wörter zählen string umkehren hashmap iterieren datei zeilenweise lesen string zu int int zu string array länge arraylist sortieren substring prüfen array ausgeben duplikate entfernen strings vergleichen liste in array zahlen formatieren java treemap treemap in java nutzt einen rot schwarz baum für sortierte schlüssel wert zuordnungen mit navigablemap api was eine treemap ist treemap k v ist die map die ihre schlüssel sortiert hält intern verwendet sie einen rot schwarz baum denselben selbstbalancierenden binären suchbaum der auch treeset zugrunde liegt und jede operation ist o log n put get remove der erste schlüssel der letzte schlüssel bereichsabfragen der preis für die logarithmische komplexität ist die navigations api auf navigablemap k v floor ceiling lower higher sub map head map tail map absteigende ansichten nichts davon ist bei einer hash tabelle ohne vollständiges sortieren möglich wenn sie sich dabei ertappen am ende einer funktion new treemap hashmap zu schreiben um die einträge zu sortieren ist das das signal dass treemap von anfang an der richtige typ gewesen wäre zwei arten die schlüsselreihenfolge festzulegen eine treemap muss schlüssel irgendwie vergleichen wie bei treeset gibt es dafür zwei möglichkeiten natürliche ordnung der schlüsseltyp implementiert comparable k strings numerische wrapper datumstypen und eigene record typen die comparable implementieren kommen alle infrage ein comparator k der dem konstruktor übergeben wird verwenden sie ihn wenn keine natürliche ordnung vorhanden ist oder diese nicht ihren anforderungen entspricht siehe comparable vs comparator für die unterschiede zwischen beiden map string integer byname new treemap case sensitive natural map string integer bynameci new treemap string case_insensitive_order map string integer reverse new treemap comparator reverseorder kopieren wie bei treeset gilt gleichheit wird über compareto mit rückgabewert 0 bestimmt nicht über equals zwei schlüssel die der comparator als gleich einstuft kollabieren zu einem einzigen eintrag das zweite put überschreibt das erste bei einer string case_insensitive_order schlüsselung führt das einsetzen von java und anschließend java zu einem einzigen eintrag dessen schlüssel das ursprüngliche java ist und dessen wert der wert des zweiten put ist das ist fast nie das was man aus versehen möchte die navigablemap api die schnittstelle die eine treemap implementiert bietet ihnen viele operationen die eine einfache map nicht bietet treemap integer string t new treemap t put 10 a t put 20 b t put 30 c t put 40 d t firstkey 10 t lastkey 40 t firstentry 10 a t pollfirstentry 10 a removes t lowerkey 30 20 strictly less t floorkey 30 30 t higherkey 30 40 strictly greater t ceilingkey 30 30 t headmap 30 10 a 20 b keys strictly 30 t tailmap 30 30 c 40 d keys 30 t submap 20 40 20 b 30 c 20 40 t descendingmap reverse order view kopieren das ist der grund warum treemap existiert finde das nächste ereignis vor 9 uhr lautet headmap 9am lastentry eine logarithmische suche dieselbe operation auf einer hashmap müsste jeden schlüssel durchsuchen sub map ansichten sind live submap headmap und tailmap geben ansichten der ursprünglichen map zurück keine kopien änderungen die über die ansicht vorgenommen werden wirken sich auf die ursprüngliche map aus und änderungen an der ursprünglichen map die in den bereich der ansicht fallen erscheinen in der ansicht die ansichten erzwingen auch den bereich der versuch über die ansicht einen schlüssel außerhalb des bereichs einzufügen löst illegalargumentexception aus so bleibt die bereichsbegrenzte iteration auch bei mutationen während des durchlaufs sicher treemap integer string t new treemap t put 10 a t put 20 b t put 30 c navigablemap integer string mid t submap 15 true 25 true mid put 20 updated ok 20 is in range mid put 40 x would throw 40 is out of range system out println t 10 a 20 updated 30 c kopieren null wird bei schlüsseln abgelehnt in einer treemap kann kein null schlüssel vorhanden sein aus demselben grund warum treeset sie ablehnt es gibt keine sinnvolle möglichkeit compareto auf null aufzurufen das erste put null löst nullpointerexception aus null werte sind jedoch zulässig wann man treemap wählt entscheidungsablauf sie benötigen sortierte iteration nach schlüssel oder bereichsabfragen auf schlüsseln treemap die einzige wahl sie benötigen schnellen zugriff und reihenfolge ist egal hashmap o 1 gewinnt sie benötigen schnellen zugriff und iteration in einfügereihenfolge linkedhashmap der schlüsseltyp ist ein enum enummap schneller als treemap und von natur aus geordnet alle vier implementieren denselben map vertrag sodass der wechsel zwischen ihnen in der regel eine einzeilige konstruktoränderung ist ein nützliches muster verwenden sie eine hashmap zum schnellen aufbau der map und dann einmalig new treemap hashmap um am ende eine sortierte ansicht darzustellen schnell aufbauen sortiert präsentieren ein ausgearbeitetes beispiel terminplanung bereichsabfragen comparator schlüsselung das folgende programm verwendet eine treemap um einen kleinen terminplan zu modellieren der nach minuten seit mitternacht als schlüssel geordnet ist es demonstriert die navigations api für was ist das nächste ereignis nach x und alles vor y zeigt die live sub map ansicht und enthüllt die comparator gleichheitsfalle mit einer case insensitiven map java editable runs on the server run import java util public class treemapshowcase public static void main string args a schedule keyed by minutes since midnight treemap integer string schedule new treemap schedule put 9 60 standup schedule put 10 60 30 design review schedule put 13 60 lunch with team schedule put 16 60 demo schedule put 18 60 ship system out println schedule sorted by key schedule foreach k v system out println k 60 string format 02d k 60 v int now 11 60 0 system out println nat 11 00 system out println next event schedule ceilingentry now system out println most recent past schedule lowerentry now morning slice live view navigablemap integer string morning schedule headmap 12 60 false system out println nmorning key 12 00 morning schedule put 11 60 30 coffee falls in the morning range system out println after adding coffee at 11 30 system out println morning view morning reflects the new entry pollfirstentry priority queue like draining system out println ndraining in time order while schedule isempty map entry integer string next schedule pollfirstentry system out println next getkey 60 string format 02d next getkey 60 next getvalue the comparator equality trap treemap string integer ci new treemap string case_insensitive_order ci put java 1 ci put java 2 comparator says equal overwrites value keeps original key system out println ncase insensitive ci was man aus dem durchlauf mitnehmen sollte der terminplan wird in chronologischer reihenfolge ausgegeben ohne explizite sortierung das hinzufügen von coffee um 11 30 uhr ordnete es automatisch an der richtigen stelle ein wir haben zum zeitpunkt 11 00 uhr abgefragt ceilingentry 11 60 gibt den nächsten eintrag bei oder nach 11 00 uhr zurück das ist das mittagessen um 13 00 uhr das design review um 10 30 uhr liegt vor 11 00 uhr und kommt daher nicht infrage lowerentry 11 60 gibt den jüngsten eintrag strikt vor 11 00 uhr zurück das design review um 10 30 uhr beide sind o log n die morning sub map ist eine live ansicht coffee erschien darin nachdem wir es in die ursprüngliche map eingefügt hatten hätten wir midnight snack um 23 00 uhr eingefügt hätte die ansicht diesen ignoriert außerhalb des bereichs pollfirstentry hat wiederholt das nächste anstehende ereignis entnommen das ist eine einfache prioritätswarteschlange wenn man auch lookups nach schlüssel benötigt was eine echte priorityqueue nicht leisten kann die case insensitive map kollabierte java und java zu einem einzigen eintrag mit dem ursprünglichen schlüssel java aber dem wert des zweiten puts 2 comparator gleichheit nicht equals gleichheit was als nächstes kommt die vier modernen map implementierungen hashmap linkedhashmap treemap und concurrenthashmap sind die zu bevorzugenden in neuem code es gibt noch eine weitere im jdk die all diesen vorausgeht und gelegentlich in altem code zu sehen ist hashtable es lohnt sich zu wissen warum sie existiert warum sie heute fast immer die falsche wahl ist und wie man sie ersetzen kann übungen übung eine treemap integer string enthält die schlüssel 10 20 30 40 was gibt tree floorkey 25 zurück eine treemap integer string enthält die schlüssel 10 20 30 40 was gibt tree floorkey 25 zurück 20 der größte schlüssel der kleiner oder gleich 25 ist 30 der kleinste schlüssel der größer oder gleich 25 ist 25 der schlüssel wird mit einem null wert eingefügt und zurückgegeben null floorkey gibt nur einen schlüssel zurück wenn er exakt in der map vorhanden ist prüfen was this page helpful yes no previous linkedhashmap next hashtable on this page was eine treemap ist zwei arten die schlüsselreihenfolge festzulegen die navigablemap api sub map ansichten sind live null wird bei schlüsseln abgelehnt wann man treemap wählt ein ausgearbeitetes beispiel terminplanung bereichsabfragen comparator schlüsselung was als nächstes kommt übungen w3docs kostenlose tutorials beispiele übungen snippets und quizze für das web seit 2014 bücher html lernen css lernen javascript lernen git lernen java lernen php lernen python lernen üben übungen qui...
|