Introducció a HashMap
HashMap
és una de les implementacions més utilitzades de la interfície Map
en Java. Permet emmagatzemar parelles clau-valor, on cada clau és única. És una estructura de dades molt eficient per a operacions de cerca, inserció i eliminació.
Característiques de HashMap
- No ordenat: Els elements no tenen un ordre específic.
- Permet valors null: Es poden utilitzar claus i valors nulls.
- No sincronitzat: No és segur per a l'ús en entorns multithreading sense sincronització addicional.
- Complexitat: Les operacions de cerca, inserció i eliminació tenen una complexitat de temps constant O(1) en la majoria dels casos.
Creació d'un HashMap
Per crear un HashMap
, primer has d'importar la classe des del paquet java.util
.
import java.util.HashMap; public class ExempleHashMap { public static void main(String[] args) { // Creació d'un HashMap HashMap<Integer, String> map = new HashMap<>(); // Inserció de parelles clau-valor map.put(1, "Un"); map.put(2, "Dos"); map.put(3, "Tres"); // Impressió del HashMap System.out.println(map); } }
Explicació del Codi
- Importació:
import java.util.HashMap;
importa la classeHashMap
. - Creació:
HashMap<Integer, String> map = new HashMap<>();
crea unHashMap
amb claus de tipusInteger
i valors de tipusString
. - Inserció:
map.put(1, "Un");
insereix la parella clau-valor (1, "Un") alHashMap
. - Impressió:
System.out.println(map);
imprimeix el contingut delHashMap
.
Operacions Bàsiques
Inserció
Utilitza el mètode put
per afegir parelles clau-valor.
Accés
Utilitza el mètode get
per obtenir el valor associat a una clau.
Eliminació
Utilitza el mètode remove
per eliminar una parella clau-valor.
Comprovació de Claus i Valors
containsKey
: Comprova si una clau existeix alHashMap
.containsValue
: Comprova si un valor existeix alHashMap
.
boolean existeixClau = map.containsKey(1); // Retorna true boolean existeixValor = map.containsValue("Dos"); // Retorna true
Iteració
Pots iterar sobre les claus, valors o parelles clau-valor utilitzant un bucle for-each
.
// Iteració sobre les claus for (Integer clau : map.keySet()) { System.out.println("Clau: " + clau); } // Iteració sobre els valors for (String valor : map.values()) { System.out.println("Valor: " + valor); } // Iteració sobre les parelles clau-valor for (Map.Entry<Integer, String> entrada : map.entrySet()) { System.out.println("Clau: " + entrada.getKey() + ", Valor: " + entrada.getValue()); }
Exercicis Pràctics
Exercici 1: Creació i Manipulació d'un HashMap
- Crea un
HashMap
per emmagatzemar noms de persones (claus) i les seves edats (valors). - Afegeix almenys 5 parelles clau-valor.
- Imprimeix totes les claus i valors.
- Elimina una clau i el seu valor associat.
- Comprova si una clau específica existeix al
HashMap
.
Solució
import java.util.HashMap; public class ExerciciHashMap { public static void main(String[] args) { // Creació del HashMap HashMap<String, Integer> persones = new HashMap<>(); // Inserció de parelles clau-valor persones.put("Anna", 30); persones.put("Joan", 25); persones.put("Maria", 28); persones.put("Pere", 35); persones.put("Laura", 22); // Impressió de totes les claus i valors for (Map.Entry<String, Integer> entrada : persones.entrySet()) { System.out.println("Nom: " + entrada.getKey() + ", Edat: " + entrada.getValue()); } // Eliminació d'una clau persones.remove("Pere"); // Comprovació si una clau existeix boolean existeix = persones.containsKey("Maria"); System.out.println("Maria existeix: " + existeix); } }
Exercici 2: Comptar la Frequència de Paraules
- Escriu un programa que llegeixi una llista de paraules i compti la freqüència de cada paraula utilitzant un
HashMap
. - Imprimeix la paraula i la seva freqüència.
Solució
import java.util.HashMap; import java.util.Scanner; public class FrequenciaParaules { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); HashMap<String, Integer> frequencia = new HashMap<>(); System.out.println("Introdueix paraules (escriu 'fi' per acabar):"); while (true) { String paraula = scanner.next(); if (paraula.equals("fi")) { break; } frequencia.put(paraula, frequencia.getOrDefault(paraula, 0) + 1); } // Impressió de la freqüència de cada paraula for (Map.Entry<String, Integer> entrada : frequencia.entrySet()) { System.out.println("Paraula: " + entrada.getKey() + ", Freqüència: " + entrada.getValue()); } scanner.close(); } }
Conclusió
HashMap
és una eina poderosa i flexible per emmagatzemar i gestionar parelles clau-valor en Java. Amb les seves operacions eficients i la seva facilitat d'ús, és una de les estructures de dades més utilitzades en el desenvolupament de programari. Practicar amb HashMap
et permetrà comprendre millor com gestionar dades de manera eficient i efectiva.
Curs de Programació en Java
Mòdul 1: Introducció a Java
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
Mòdul 4: Programació Orientada a Objectes Avançada
Mòdul 5: Estructures de Dades i Col·leccions
Mòdul 6: Gestió d'Excepcions
Mòdul 7: Entrada/Sortida de Fitxers
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection