Η κλάση HashMap στη Java σάς επιτρέπει να αποθηκεύετε δεδομένα σε ζεύγη κλειδιού-τιμής. Αυτό όχι μόνο διευκολύνει την ανάκτηση και τη διαχείριση μιας λίστας, αλλά σας παρέχει επίσης πολλές επιλογές πρόσβασης. Εδώ θα εξετάσουμε τις πιο σημαντικές μεθόδους.

Τι είναι τα HashMaps στη Java;

Υπάρχουν διάφοροι τρόποι αποθήκευσης και ανάκτησης δεδομένων. Ο τύπος αποθήκευσης που λειτουργεί καλύτερα εξαρτάται από τον τρόπο με τον οποίο σκοπεύετε να χρησιμοποιήσετε τα δεδομένα. Σε πολλές περιπτώσεις, η κλάση Java HashMap είναι πιθανώς η καλύτερη λύση. Σε αντίθεση με άλλες μεθόδους, αυτή η κλάση αποθηκεύει τα δεδομένα ως ζεύγη κλειδιού-τιμής. Αυτό σημαίνει ότι σε κάθε κλειδί αντιστοιχεί ακριβώς μία τιμή. Αν θέλετε να ανακτήσετε μια τιμή, μπορείτε να χρησιμοποιήσετε το αντίστοιχο κλειδί για να λάβετε το αποτέλεσμα που αναζητάτε. Τα κλειδιά και οι τιμές μπορεί να αποτελούνται από εντελώς διαφορετικούς τύπους δεδομένων, όπως συμβολοσειρές, αριθμούς ή άλλα αντικείμενα.

Η κλάση Java HashMap προσφέρει πολλά πλεονεκτήματα. Το πρώτο είναι ότι μπορείτε να πραγματοποιήσετε γρήγορη αναζήτηση μέσα στη γλώσσα προγραμματισμού. Η προσέγγιση κλειδί-τιμή εξασφαλίζει επίσης ότι δεν αποδίδονται πολλαπλές τιμές σε ένα κλειδί, αποτρέποντας έτσι τις διπλές καταχωρήσεις. Ωστόσο, μπορείτε να προσθέσετε το ίδιο αντικείμενο πολλές φορές χρησιμοποιώντας διαφορετικά κλειδιά. Αυτός ο τύπος αποθήκευσης και λειτουργικότητας αναζήτησης έχει θετική επίδραση στην απόδοση σε σύγκριση με τις άκαμπτες λίστες, οι οποίες είναι σημαντικά λιγότερο ευέλικτες. Αυτό είναι επίσης ένα από τα σημαντικότερα πλεονεκτήματα των αποθηκευτικών χώρων κλειδιού-τιμής, οι οποίοι χρησιμοποιούν την ίδια αρχή. Στις επόμενες ενότητες, θα σας δείξουμε πώς να δημιουργείτε και να χρησιμοποιείτε Java HashMaps.

Πώς να δημιουργήσετε και να χρησιμοποιήσετε HashMaps σε Java

Για να δημιουργήσετε ένα νέο HashMap σε Java, πρέπει πρώτα να εισαγάγετε την κλάση. Για να το κάνετε αυτό, χρησιμοποιήστε την εντολή Java import. Ο κώδικας έχει την εξής μορφή:

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

Οι δύο τύποι δεδομένων, οι οποίοι διαχωρίζονται με κόμμα (στην περίπτωση αυτή, String, String), είναι το κλειδί και η τιμή.

Δημιουργία νέου HashMap

Για να εξηγήσουμε καλύτερα τον τρόπο λειτουργίας των Java HashMaps, έχουμε δημιουργήσει ένα απλό παράδειγμα. Για το παράδειγμά μας, έχουμε μια λίστα πελατών που μια εταιρεία θέλει να αποθηκεύσει και να έχει πρόσβαση ανά πάσα στιγμή. Η λίστα περιλαμβάνει το όνομα κάθε πελάτη και έναν μοναδικό αριθμό πελάτη. Αν και ο αριθμός πελάτη (το κλειδί στο παράδειγμά μας) είναι πάντα μοναδικός, είναι πιθανό να υπάρχουν περισσότεροι πελάτες με το ίδιο όνομα. Ωστόσο, κάθε ένας από αυτούς τους πελάτες έχει τον δικό του μοναδικό αριθμό. Αυτός ο αριθμός καταγράφεται ως τύπος δεδομένων ακέραιου αριθμού και τα ονόματα ως συμβολοσειρές. Δείτε πώς μπορείτε να το ρυθμίσετε σε ένα Java HashMap:

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

Προσθήκη στοιχείων

Τώρα έχουμε το Java HashMap, αλλά είναι ακόμα άδειο. Για να προσθέσουμε νέα ζεύγη κλειδιών-τιμών, θα χρησιμοποιήσουμε τη μέθοδο put(). Δείτε πώς λειτουργεί:

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);
	}
}
java

Χρησιμοποιούμε την εντολή System.out.println για να εμφανίσουμε τη λίστα των πελατών μας. Το αποτέλεσμα θα πρέπει να μοιάζει με αυτό:

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

Ανάκτηση στοιχείων

Τώρα έχουμε δημιουργήσει μια λίστα πελατών που μπορεί να περιέχει πολλές εγγραφές. Θέλουμε επίσης να έχουμε πρόσβαση σε κάθε εγγραφή πελάτη ξεχωριστά. Για να το κάνουμε αυτό, περνάμε το κλειδί στη μέθοδο get(). Ακολουθεί ένα παράδειγμα του πώς λειτουργεί αυτό:

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));
	}
}
java

Θα πρέπει να εμφανίζεται μόνο το όνομα «Jerry Mowry».

Διαγραφή καταχωρήσεων

Αν θέλετε να διαγράψετε μια καταχώριση, χρησιμοποιήστε τη μέθοδο remove(). Ακολουθεί ένα παράδειγμα χρήσης αυτής της μεθόδου:

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);
	}
}
java

Το αποτέλεσμα έχει τώρα την εξής μορφή:

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

Μια άλλη επιλογή είναι να διαγράψετε ολόκληρη τη λίστα. Για να το κάνετε αυτό, χρησιμοποιήστε τη μέθοδο clear().

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);
	}
}
java

Τώρα, το μόνο αποτέλεσμα που λαμβάνουμε είναι το εξής:

{ }
java

Πώς να προσδιορίσετε τον αριθμό των συμμετοχών

Αν και το Java HashMap είναι αρκετά απλό, μπορείτε επίσης να χρησιμοποιήσετε αυτήν την κλάση για να διαχειριστείτε μεγαλύτερα και πιο σύνθετα έργα. Σε ένα μεγαλύτερο έργο, ίσως θελήσετε να προσδιορίσετε τον ακριβή αριθμό των εγγραφών που έχετε. Σε τελική ανάλυση, αυτός θα είναι ο συνολικός αριθμός των πελατών σας. Μπορείτε να χρησιμοποιήσετε size() για να το κάνετε αυτό. Δείτε πώς:

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());
	}
}
java

Στο παράδειγμά μας, εμφανίζεται ο αριθμός 3.

Πώς να εμφανίσετε μόνο κλειδιά ή τιμές

Μπορείτε επίσης να λάβετε μια λίστα που περιλαμβάνει μόνο τα κλειδιά ή τις τιμές, χρησιμοποιώντας έναν βρόχο for-each. Για να ανακτήσετε κλειδιά, χρησιμοποιήστε τη μέθοδο keySet(), και για τιμές, χρησιμοποιήστε τη μέθοδο values(). Στο παρακάτω παράδειγμα κώδικα, θα χρησιμοποιήσουμε values():

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);
		}
	}
}
java

Το αποτέλεσμα είναι:

Jerry Mowry
Peter Smith
Maria Grosso
java

Έλεγχος αν ένα HashMap περιέχει μια συγκεκριμένη τιμή ή κλειδί

Εκτός από την πρόσβαση σε μια συγκεκριμένη καταχώριση, μπορείτε επίσης να ελέγξετε αν μια καταχώριση υπάρχει ήδη σε ένα Java HashMap. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τη μέθοδο containsKey() (για κλειδιά) και τη μέθοδο containsValue() (για τιμές). Εάν το στοιχείο περιλαμβάνεται, η έξοδος θα είναι «true». Εάν το στοιχείο δεν βρίσκεται στο HashMap, η έξοδος θα είναι «false». Δείτε πώς λειτουργούν και οι δύο μέθοδοι:

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");
	}
}
java

Δεδομένου ότι ο κωδικός «15312» περιλαμβάνεται, αλλά η τιμή «Stuart Miller» δεν περιλαμβάνεται, το αποτέλεσμα έχει την εξής μορφή.

true
false
java

8c01fc0cbffa84535fbfd099968e78f7

Go to Main Menu