Datastrukturer i Collections Framework

Datatyper och undantag i Java

Jim White

Java Instructor

Vad är ett ramverk?

  • Ett ramverk är en uppsättning återanvändbara typer med generisk funktionalitet
    • Exempel på typer: klasser och gränssnitt
    • Förbättrar applikationens kvalitet
    • Undviker att behöva bygga allt från grunden
  • Ramverk levereras i ett eller flera paket i Java
  • Ramverk följs av riktlinjer och regler för användning

Ramverk erbjuder färdig kod med generisk funktionalitet

1 Foto av Ashkan Forouzani på Unsplash
Datatyper och undantag i Java

Typer i Java

Två kategorier av typer i Java:

  • Primitiva typer
    • byte, short, int, long, float, double, char, boolean
  • Referenstyper
    • Klasser
    • Gränssnitt
    • Enum
    • Arrayer
    • ...
Datatyper och undantag i Java

Collections Framework

  • Collections Framework: Javas inbyggda uppsättning generiska datastrukturtyper
    • Ett paket med typer för att lagra och hantera en grupp objekt
  • Definieras i paketet java.util
    • Vi måste använda import för att använda ramverkets typer
Datatyper och undantag i Java

Vad gäller för arrayer?

  • Javas arrayer kan hålla en grupp objekt eller primitiver
    • Collections Framework erbjuder ett alternativt set datastrukturer
  • Båda har för- och nackdelar
Arrayer Samlingar
Inte storleksändringsbara Dynamisk storlek (växer och krymper)
Lagrar primitiver eller objekt Lagrar enbart objekt
Homogena – element måste vara av samma typ Heterogena – objekt kan vara av olika typ
Specialnotation för åtkomst av []-element Använder metoder för åtkomst
Specialsyntax för initiering {} Använder new (ingen specialsyntax för initiering)
Datatyper och undantag i Java

Typer i Collections Framework

  • Collections Framework delas in i två grundtyper: Collection och Map
    • Representerade av två gränssnitt: java.util.Collection & java.util.Map
    • Båda har flera implementerande klasser
  • import java.util.*; för att använda valfri typ i Collections Framework

Collections Framework har två grundtyper: Collection och Map

Datatyper och undantag i Java

Collection

  • Collection definierar många typer av grupperingar av objekt
    • Dessa definieras av ytterligare gränssnitt
  • Ordnad grupp av objekt: List
  • Oordnad grupp av objekt: Set
  • Grupp med först-in-först-ut: Queue
    • Fungerar som en kö på bank eller biljettlucka
  • .add(Object) och .remove(Object) för att ändra i valfri Collection

Collection innehåller List, Set och Map

Datatyper och undantag i Java

Map

  • Map-datastrukturer fungerar som en telefonkatalog eller ordbok
    • "nyckel"-objekt -> till "värde"-objekt
    • I telefonkatalogen: ett namn -> telefonnummer
    • I ordboken: ett ord -> ordets definition
  • Använd nyckelobjektet för att ändra i en Map
    • .put(Object key, Object value) för att lägga till i en Map
    • .remove(Object key) för att ta bort från en Map
  • Många typer av Map – till exempel HashMap

Map-datastrukturen fungerar som en telefonkatalog eller ordbok

Datatyper och undantag i Java

Generics

  • Collections och Maps är "parametriserade"
    • Javas generics används för att ange objekttypen i en Collection eller Map
    • Generisk syntax: <Class> med en parametriserad typ.
      • < > kallas diamantoperatorn
ArrayList<String> list = new ArrayList<String>();  // Construct with generics
Datatyper och undantag i Java

Generics och typsäkerhet

  • Generics ger bättre typsäkerhet
    • Begränsar vilka objekt som tillåts i en Collection eller Map
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // Adding a String is ok
list.add(new Integer(5));  // Trying to add an Integrer causes compiler error
Datatyper och undantag i Java

Utan generics

ArrayList list2 = new ArrayList();  // Legal but non-specific

list2.add("hello");                 // Now any type of object can be added
list2.add(new Integer(5));
Datatyper och undantag i Java

Variabeldeklaration och tilldelning

  • Variabeldeklaration och tilldelning kan göras separat
ArrayList<String> list = new ArrayList<String>(); //Single line declaration and assignment

ArrayList<String> list2;    // Variable declaration...
list2 = new ArrayList<String>();  //... and assignement can be 2 statements
Datatyper och undantag i Java

Nu kör vi en övning!

Datatyper och undantag i Java

Preparing Video For Download...