Java 字典

Rashmi Patidar 2022年1月14日
Java 字典

在 Java 语言中,字典使用称为 Map 接口的数据结构表示。Map 数据结构用于以键值对的形式呈现数据。Map 是一个跟踪所有键和相应值的接口。用户可以根据唯一键检索值。Map 接口包含以下属性:

  1. Map 中的所有键都是唯一的。
  2. 可以有一个唯一键对应一个或多个值。
  3. 键是非空的实体。

下面的代码块演示了在 Java 语言中使用字典或 Map

import java.util.HashMap;
import java.util.Map;

public class Dictionary {
    public static void main(String[] args) {
        System.out.println("Dictionary in Java");
        System.out.println("Using HashMap ");
        Map<String, String> map = new HashMap<>();
        map.put("1", "Letters with alphabetical Order with key A");
        map.put("2", "Letters with alphabetical Order with key B");
        System.out.println(map.get("2"));
    }
}

除了 Collection 框架层次结构之外,Map 是一个单独存在的界面。

Map 存在于 java.util 包中,显示了如何将键映射到值。一个映射可以有多种实现,它们是:

  1. HashMap
  2. LinkedHashMap
  3. 哈希表

每个的用法可以根据用户对实现的需求而有所不同。

在上面的代码片段中,使用了 HashMap 实现。它是 Java 语言中默认且广泛使用的类。所有三种类型之间的区别定义如下。

HashMap 是在 Java 1.2 版本中引入的,而 Hashtable 是一个遗留类。它是线程安全的,因此允许在多个线程之间进行并发操作,从而保持代码的一致性。但是 HashMap 不是线程安全的并且不允许并发。

由于 HashMap 的线程安全特性,它的性能比 Hashtable 更快。此外,HashMap 是快速失败的,并且当它的实例一次被多个线程操作时会抛出 ConcurrencyException。相比之下,Hashtable 似乎是安全的。LinkedHashMap 的用例驻留在用户想要保存插入顺序时。

Map 实例是使用上面代码块中的 HashMap 类创建的。getput 等操作用于存储和检索实例中的特定值。put 方法有两个参数,即键和它的值。

在内部,如果键存在于 Map 对象中,则首先使用 containsKey() 函数对其进行评估。如果计算结果为真,则键的当前值将替换为新值。如果具有给定键的 Map 不支持定义的操作,则该方法将抛出 UnsupportedOperationException

ClassCastException 如果键或值阻止键存储,NullPointerException 如果指定的键或值是 null 并且 Map 不允许 null 键或值。IllegalArgumentException 如果键或值的某些属性阻止其存储在 Map 中。

一旦键被插入到 Map 中,就会使用 get 函数检索它。get 函数采用一个作为唯一键的参数。当键不合适或指定的键为 null 时,它会抛出 ClassCastExceptionNullPointerException

下面是使用 HashMap 类的 Map 界面的输出。

Dictionary in Java
Using HashMap
Letters with alphabetical Order with key B
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn