# Mikä on Java HashMap ja miten sitä käytetään?

Java-kielessä HashMap-luokka mahdollistaa tietojen tallentamisen avain-arvo-pareina. Tämä helpottaa luettelon hakua ja hallintaa, mutta tarjoaa myös lukuisia käyttövaihtoehtoja. Käymme tässä läpi tärkeimmät menetelmät.

## Mitä ovat HashMaps Java-kielessä?

Tietojen tallentamiseen ja hakemiseen on useita eri tapoja. Paras tallennustapa riippuu siitä, miten aiot käyttää tietoja. Useissa tapauksissa Java HashMap -luokka on todennäköisesti paras ratkaisu. Toisin kuin muut menetelmät, tämä luokka tallentaa tiedot **avain-arvo-pareina**. Tämä tarkoittaa, että jokaiselle avaimelle on määritetty tarkalleen yksi arvo. Jos haluat hakea arvon, voit käyttää vastaavaa avainta saadaksesi haluamasi tuloksen. Avaimet ja arvot voivat koostua täysin erilaisista tietotyypeistä, kuten merkkijonoista, numeroista tai muista objekteista.

Java HashMap -luokka tarjoaa useita etuja. Ensinnäkin sen avulla voit suorittaa nopean haun ohjelmointikielessä. Avain-arvo-lähestymistapa varmistaa myös, että yhdelle avaimelle ei määritetä useita arvoja, **mikä estää päällekkäisyydet**. Voit kuitenkin lisätä saman objektin useita kertoja eri avaimilla. Tällainen tallennus- ja hakutoiminto vaikuttaa suorituskykyyn positiivisesti verrattuna jäykkään luetteloon, joka on huomattavasti vähemmän joustava. Tämä on myös yksi avain-arvo-tallennustilan suurimmista eduista, joka käyttää samaa periaatetta. Seuraavissa osioissa näytämme, kuinka luoda ja käyttää Java HashMap-karttoja.

## HashMap-karttojen luominen ja käyttö Java-kielellä

Uuden HashMap-kartan luomiseksi Java-kielellä sinun on ensin tuotava luokka. Tätä varten käytä Java-komentoa `import`. Koodi näyttää tältä:

```java
import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();
```

Kaksi datatyyppiä, jotka on erotettu toisistaan pilkulla (tässä tapauksessa `String, String`), ovat avain ja arvo.

### Uuden HashMap-kartan luominen

Selittääksemme paremmin Java HashMap-karttojen toimintaa, olemme keksineet yksinkertaisen esimerkin. Esimerkissämme on luettelo asiakkaista, jotka yritys haluaa tallentaa ja joihin se haluaa päästä käsiksi milloin tahansa. Luettelossa on kunkin asiakkaan nimi ja yksilöllinen asiakastunnus. Vaikka asiakastunnus (esimerkissämme avain) on aina yksilöllinen, on mahdollista, että useilla asiakkailla on sama nimi. Jokaisella asiakkaalla on kuitenkin oma yksilöllinen tunnuksensa. Tämä tunnus tallennetaan kokonaislukutyyppisenä datana ja nimet merkkijonoina. Näin voit määrittää tämän Java HashMapissa:

```java
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	}
}
```

### Elementtien lisääminen

Nyt meillä on Java HashMap, mutta se on vielä tyhjä. Lisätäksemme uusia avain-arvo-pareja käytämme `put()` -menetelmää. Se toimii seuraavasti:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList);
	}
}
```

Käytämme komentoa `System.out.println` asiakastietojen näyttämiseen. Tulostuksen pitäisi näyttää tältä:

```java
{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}
```

### Elementtien hakeminen

Nyt olemme luoneet asiakasluettelon, joka voi sisältää lukuisia merkintöjä. Haluamme myös pystyä käsittelemään kutakin asiakastietoa erikseen. Tätä varten välitämme avaimen **get()** -metodille. Tässä on esimerkki siitä, miten tämä toimii:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.get(1077));
	}
}
```

Vain nimi “Jerry Mowry” tulisi näkyä.

### Merkintöjen poistaminen

Jos haluat poistaa merkinnän, käytä menetelmää `remove()`. Tässä on esimerkki tämän menetelmän käytöstä:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.remove(1077);
	System.out.println(customerList);
	}
}
```

Tulostus näyttää nyt tältä:

```java
{15312=Peter Smith, 73329=Maria Grosso}
```

Toinen vaihtoehto on poistaa koko luettelo. Tätä varten käytä menetelmää `clear()`.

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.clear();
	System.out.println(customerList);
	}
}
```

Nyt saamme vain seuraavan tuloksen:

```java
{ }
```

## Kuinka määrittää merkintöjen lukumäärä

Vaikka Java HashMap on melko yksinkertainen, voit käyttää tätä luokkaa myös suurempien ja monimutkaisempien projektien hallintaan. Suuremmassa projektissa saatat haluta määrittää tarkasti, kuinka monta merkintää sinulla on. Loppujen lopuksi kyseessä on koko asiakaskuntasi. Voit käyttää `size()` tähän tarkoitukseen. Näin se tehdään:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.size());
	}
}
```

Esimerkissämme tulostetaan luku 3.

### Kuinka näyttää vain avaimet tai arvot

Voit myös saada luettelon, joka sisältää vain avaimet tai arvot, käyttämällä for-each-silmukkaa. Avaimien hakemiseen käytetään `keySet()` -menetelmää ja arvojen hakemiseen `values()` -menetelmää. Seuraavassa koodiesimerkissä käytämme `values()`:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	for (String i : customerList.values()) {
		System.out.println(i);
		}
	}
}
```

Tulostus on:

```java
Jerry Mowry
Peter Smith
Maria Grosso
```

### HashMap-taulukon tarkistaminen tietyn arvon tai avaimen varalta

Tiettyyn merkintään pääsyn lisäksi voit myös tarkistaa, onko merkintä jo olemassa Java HashMapissa. Voit tehdä tämän käyttämällä menetelmää `containsKey()` (avaimille) ja menetelmää `containsValue()` (arvoille). Jos elementti on mukana, tulos on “true”. Jos elementti ei ole HashMapissa, tulos on “false”. Molemmat menetelmät toimivat seuraavasti:

```java
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.containsKey(15312));
	System.out.println(customerList.containsValue("Stuart Miller");
	}
}
```

Koska avain “15312” on mukana, mutta arvo “Stuart Miller” ei ole, tulos näyttää tältä.

```java
true
false
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-hashmap/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-hashmap/) for AI/LLM consumption.