Maps

Datatyper och undantag i Java

Jim White

Java Developer

Maps är uppslagstabeller

  • Maps fungerar som uppslagstabell-datastrukturer
    • Lagrar ett "värde" vid en specifik "nyckel"
    • Använder "nyckeln" för att hämta det lagrade "värdet"
  • Exempel: att ringa en läkarmottagning
    • De söker upp en journal (objektet värde) utifrån namn/födelsedatum (nyckeln key)

Maps fungerar som en uppslagstabell, ungefär som när du ringer en läkarmottagning och de ber om ditt namn och födelsedatum för att hitta din journal

Datatyper och undantag i Java

Gränssnittet Map

  • Gränssnittet Map definierar operationer på nyckel-värde-par
    • Hur man lagrar eller "lägger in" ett värde i tabellen vid en specifik nyckel
    • Hur man "tar bort" värdet vid nyckeln från Map
    • Hur man hämtar värdet givet en nyckel
  • Flera implementationer av Map med liknande beteende
    • En populär implementation av Map är HashMap
1 Se https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html för mer information
Datatyper och undantag i Java

HashMaps nycklar och värden

Nycklar och värden i Map eller HashMap kan vara av samma eller olika typer

Datatyper och undantag i Java

Konstruera en HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • Den parametriserade/generiska konstruktorn för HashMap kräver två typer

    • Den första typen = nyckeltypen

      Den första generiska parametern för HashMap gäller nycklarna

    • Den andra typen = värdetypen

      Den andra generiska parametern för HashMap gäller värdena

Nyckel- och värdetyperna i generics anger datatypen för nycklar och värden

  • Kräver import av java.util.HashMap
Datatyper och undantag i Java

HashMap-metoder

  • Använd .put(key,value) för att lägga till nyckel-värde-par i tabellen
  • Använd .remove(key) för att ta bort nyckel-värde-paret vid angiven nyckel
  • Använd .get(key) för att hämta värdet från tabellen vid angiven nyckel
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Datatyper och undantag i Java

Collections

  • java.util.Collections är en hjälpklass
  • Används för sortering, ifyllning, kopiering, sökning med mera
    • Innehåller enbart static-metoder
1 Se https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Datatyper och undantag i Java

Collection-metoder

  • Lägg till flera objekt i en List
    • addAll(List list, Object a, b, ...)
  • Returnera antalet förekomster av ett objekt i en samling
    • frequency(Collection c, Object o)
  • Ändra ordningen på objekten i en List
    • reverse(List list)
  • Sortera objekten i en List
    • sort(List list)
  • Ersätt alla objekt i en List med ett annat objekt
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Datatyper och undantag i Java

Arrays

  • Ibland behöver man konvertera en array (t.ex. int[]) till en List
    • Java-arrayer är inte storleksföränderliga och man kan behöva lägga till eller ta bort element
    • List har större kapacitet (sökning, sortering m.m.)
  • java.util.Arrays är ytterligare en hjälpklass
    • Gör det möjligt att konvertera en Java-array till en List
Datatyper och undantag i Java

Arrays – exempel

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Datatyper och undantag i Java

Nu kör vi en övning!

Datatyper och undantag i Java

Preparing Video For Download...