Java 中的 HashMap 介绍
本教程是关于 Java 中 HashMap 的介绍。我们将详细学习 HashMap 并了解如何声明和操作插入的数据。
Java 中的 HashMap 介绍
如果你正在学习 HashMap,那么你对 ArrayList
有一个基本的了解。在数组列表中,我们使用索引(即 int 类型编号)存储和访问数组的元素。
另一方面,HashMap 将元素存储在键值对中,我们可以通过使用另一种数据类型的键访问值。例如,键是整数数据类型,值是字符串数据类型,或者两者都可以是整数或字符串数据类型。
我们可以将值存储在数组列表中,那么为什么要使用 HashMap 呢?仅仅是因为通过键访问值吗?
不,这是因为性能。
假设我们想在列表中找到一个特定的元素;这将花费 O(n)
时间。如果使用二进制搜索对列表进行排序,则时间复杂度将为 O(log n)
。
但是,如果我们使用 HashMap,时间复杂度将是 O(1)
(常数时间)来找到相同的值。
HashMap 位于 java.util 包中并实现 Map 接口。HashMap 类似于 HashTable 但不同步。
在 Java 中使用 HashMap 时要记住的要点
使用 HashMap 的人必须考虑以下几点:
- 插入重复键替换对应键的值。
- 它具有基于该键的唯一键和值。请记住,这些值可能是多余的。
- Java HashMap 不保留任何顺序。
- HashMap 不同步。
- Java HashMap 可能包含多个空值和一个空键。
- HashMap 的初始默认容量为 16,负载因子为 0.75。
在 Java 中声明并插入数据到 HashMap
在 Java 中声明 HashMap 取决于我们想要什么样的安全类型。如果我们希望使用非泛型类型,我们可以如下声明 HashMap。
示例代码:
import java.util.HashMap; // import the HashMap class
public class Main {
public static void main(String[] args) {
// create the hashmap object named students
HashMap students = new HashMap();
// add data in key-value form
students.put(1, "Mehvish");
students.put(2, "Thomas");
students.put(3, "Christoper");
students.put(4, "John");
students.put("Jimi", "John");
System.out.println(students);
}
}
输出:
{1=Mehvish, 2=Thomas, 3=Christoper, 4=John, Jimi=John}
在这里,我们插入了前四个元素,其中键是整数数据类型,但第五个元素的键是字符串数据类型。这意味着我们在键的数据类型上没有一致性。
它也可能发生在值上。由于这种情况并为避免这种情况,我们可以使用泛型类型并声明 HashMap,如下所示。
示例代码:
import java.util.HashMap; // import the HashMap class
public class Main {
public static void main(String[] args) {
// create the hashmap object named students
HashMap<Integer, String> students = new HashMap<Integer, String>();
// add data in key-value form (roll number, name)
students.put(1, "Mehvish");
students.put(2, "Thomas");
students.put(3, "Christoper");
students.put(4, "John");
// print whole hashmap
System.out.println(students);
}
}
输出:
{1=Mehvish, 2=Thomas, 3=Christoper, 4=John}
观察 HashMap 声明部分;它具有键和值的特定数据类型。我们不能插入与指定数据类型不同的元素(键值对)。
有时,我们将来需要将实现更改为 LinkedHashMap 或 TreeMap。在这种情况下,如下声明 HashMap 会很有帮助。
请记住,students
是此处 Map 中的类型。我们必须将 Map
类导入为 import java.util.Map;
通过以下方式声明 HashMap。
Map<Integer, String> students = new HashMap<Integer, String>();
使用 get()
方法访问 HashMap 的值
示例代码:
import java.util.HashMap; // import the HashMap class
public class Main {
public static void main(String[] args) {
// create the hashmap object named students
HashMap<Integer, String> students = new HashMap<Integer, String>();
// add data in key-value form (roll number, name)
students.put(1, "Mehvish");
students.put(2, "Thomas");
students.put(3, "Christoper");
students.put(4, "John");
// print whole hashmap
System.out.println(students);
System.out.println(students.get(2));
}
}
输出:
{1=Mehvish, 2=Thomas, 3=Christoper, 4=John}
Thomas
在此示例中,put()
用于将特定元素(键值对)插入 HashMap。它有两个参数,键和与该键对应的值。
get()
方法获取键并从 HashMap 中检索相应的值。
使用 remove()
方法从 HashMap 中删除项目
示例代码:
import java.util.HashMap; // import the HashMap class
public class Main {
public static void main(String[] args) {
// create the hashmap object named students
HashMap<Integer, String> students = new HashMap<Integer, String>();
// add data in key-value form (roll number, name)
students.put(1, "Mehvish");
students.put(2, "Thomas");
students.put(3, "Christoper");
students.put(4, "John");
// print whole hashmap
System.out.println(students);
System.out.println(students.remove(2));
System.out.println(students);
}
}
输出:
{1=Mehvish, 2=Thomas, 3=Christoper, 4=John}
Thomas
{1=Mehvish, 3=Christoper, 4=John}
remove()
函数接受键并从 HashMap 中删除相应的项(键值对)。
在这里,我们在删除前后打印整个 HashMap。你可能会看到差异并进行观察。
使用 replace()
方法更新 HashMap 中的值
示例代码:
import java.util.HashMap; // import the HashMap class
public class Main {
public static void main(String[] args) {
// create the hashmap object named students
HashMap<Integer, String> students = new HashMap<Integer, String>();
// add data in key-value form (roll number, name)
students.put(1, "Mehvish");
students.put(2, "Thomas");
students.put(3, "Christoper");
students.put(4, "John");
// print whole hashmap
System.out.println(students);
students.replace(1, "Sania") System.out.println(students);
}
}
输出:
{1=Mehvish, 2=Thomas, 3=Christoper, 4=John}
{1=Sania, 2=Thomas, 3=Christoper, 4=John}
本节使用 replace()
方法,该方法获取键和我们要在指定键处替换的值。在此示例中,我们在更新给定键的值之前和之后打印完整的 HashMap。
你可以在此处找到其他方法并使用它们来更新 HashMap 中的值。