亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java HashMap

Java HashMap

在本教程中,我们将通过示例了解 Java HashMap 类及其各种操作。

HashMap Java集合框架的类提供了哈希表数据结构的功能。

它将元素存储在 key/value 中 对。在这里,键 是用于关联每个值的唯一标识符 在地图上。

HashMap 类实现了 Map 接口。

<图>

创建一个HashMap

为了创建哈希映射,我们必须导入 java.util.HashMap 先打包。导入包后,下面是我们如何在 Java 中创建哈希图。

// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();

在上面的代码中,我们创建了一个名为 numbers 的 hashmap .这里,K 表示键类型和V 表示值的类型。例如,

HashMap<String, Integer> numbers = new HashMap<>();

这里,keys 的类型 是 String 以及值的类型 是 Integer .


示例 1:在 Java 中创建 HashMap

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> languages = new HashMap<>();

    // add elements to hashmap
    languages.put("Java", 8);
    languages.put("JavaScript", 1);
    languages.put("Python", 3);
    System.out.println("HashMap: " + languages);
  }
}

输出

HashMap: {Java=8, JavaScript=1, Python=3}

在上面的例子中,我们创建了一个 HashMap 命名为语言 .

在这里,我们使用了 put() 将元素添加到 hashmap 的方法。我们将详细了解 put() 本教程后面的方法。


Java HashMap 的基本操作

HashMap 类提供了各种方法来对 hashmap 执行不同的操作。我们将在本教程中看一些常用的arraylist操作:


1。向 HashMap 添加元素

要将单个元素添加到 hashmap,我们使用 put() HashMap 的方法 班级。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> numbers = new HashMap<>();

    System.out.println("Initial HashMap: " + numbers);
    // put() method to add elements
    numbers.put("One", 1);
    numbers.put("Two", 2);
    numbers.put("Three", 3);
    System.out.println("HashMap after put(): " + numbers);
  }
}

输出

Initial HashMap: {}
HashMap after put(): {One=1, Two=2, Three=3}

在上面的例子中,我们创建了一个 HashMap 命名为 数字 .在这里,我们使用了 put() 向数字添加元素的方法。

注意声明,

numbers.put("One", 1);

在这里,我们传递 String 值 一个 作为键和 Integer 值 1 作为 put() 的值 方法。

推荐读物


2。访问 HashMap 元素

我们可以使用 get() 从 hashmap 访问值的方法。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // get() method to get value
    String value = languages.get(1);
    System.out.println("Value at index 1: " + value);
  }
}

输出

HashMap: {1=Java, 2=Python, 3=JavaScript}
Value at index 1: Java

在上面的例子中,注意表达式,

languages.get(1);

在这里,get() 方法采用 key 作为其参数并返回相应的值 与键关联。

我们还可以访问 keys , 值 , 和 键/值 使用 keySet() 将哈希图对作为集合视图 , values() , 和 entrySet() 方法分别。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    HashMap<Integer, String> languages = new HashMap<>();

    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // return set view of keys
    // using keySet()
    System.out.println("Keys: " + languages.keySet());

    // return set view of values
    // using values()
    System.out.println("Values: " + languages.values());

    // return set view of key/value pairs
    // using entrySet()
    System.out.println("Key/Value mappings: " + languages.entrySet());
  }
}

输出

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: [1, 2, 3]
Values: [Java, Python, JavaScript]
Key/Value mappings: [1=Java, 2=Python, 3=JavaScript]

在上面的例子中,我们创建了一个名为 languages 的 hashmap .在这里,我们正在访问 keys , 值 , 和 键/值 来自 hashmap 的映射。

推荐读物


3。更改 HashMap 值

我们可以使用 replace() 方法来更改与哈希图中的键关联的值。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("Original HashMap: " + languages);

    // change element with key 2
    languages.replace(2, "C++");
    System.out.println("HashMap using replace(): " + languages);
  }
}

输出

Original HashMap: {1=Java, 2=Python, 3=JavaScript}
HashMap using replace(): {1=Java, 2=C++, 3=JavaScript}

在上面的例子中,我们创建了一个名为 languages 的 hashmap .注意表达式,

languages.replace(2, "C++");

在这里,我们正在更改键 2 引用的值 使用新值 C++ .

HashMap 类还提供了 replace() 的一些变体 方法。要了解更多信息,请访问


4。移除 HashMap 元素

要从哈希图中删除元素,我们可以使用 remove() 方法。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // remove element associated with key 2
    String value = languages.remove(2);
    System.out.println("Removed value: " + value);

    System.out.println("Updated HashMap: " + languages);
  }
}

输出

HashMap: {1=Java, 2=Python, 3=JavaScript}
Removed value: Python
Updated HashMap: {1=Java, 3=JavaScript}

在这里,remove() 方法采用 key 作为它的参数。然后它返回 值 与键相关联 并删除 entry .

我们也可以仅在某些条件下删除条目。例如,

remove(2, "C++");

这里,remove() 方法只删除 entry 如果 键 2 与 值 C++ 相关联 .自2 与 C++ 无关 ,它不会删除条目。

要了解更多信息,请访问 Java HashMap remove()。


HashMap的其他方法

方法 说明
clear() 从 HashMap 中删除所有映射
计算() 为指定的键计算一个新值
computeIfAbsent() 如果键的映射不存在则计算值
computeIfPresent() 如果键存在则计算映射值
合并() 将指定的映射合并到HashMap
克隆() 复制HashMap
containsKey() 检查指定的键是否存在于Hashmap中
containsValue() 检查是否为 Hashmap 包含指定值
尺寸() 返回HashMap中的项目数
isEmpty() 检查 Hashmap 是空的

遍历一个HashMap

要遍历 hashmap 的每个条目,我们可以使用 Java for-each 循环。我们只能遍历 keys , 仅限数值 , 和 键/值映射 .例如,

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

class Main {
  public static void main(String[] args) {

    // create a HashMap
    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // iterate through keys only
    System.out.print("Keys: ");
    for (Integer key : languages.keySet()) {
      System.out.print(key);
      System.out.print(", ");
    }

    // iterate through values only
    System.out.print("\nValues: ");
    for (String value : languages.values()) {
      System.out.print(value);
      System.out.print(", ");
    }
    
    // iterate through key/value entries
    System.out.print("\nEntries: ");
    for (Entry<Integer, String> entry : languages.entrySet()) {
      System.out.print(entry);
      System.out.print(", ");
    }
  }
}

输出

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: 1, 2, 3,
Values: Java, Python, JavaScript,        
Entries: 1=Java, 2=Python, 3=JavaScript,

请注意,我们使用了 Map.Entry 在上面的例子中。它是 Map 的嵌套类 返回地图视图(元素)的接口。

我们首先需要导入 java.util.Map.Entry 包以便使用这个类。

这个嵌套类返回地图的视图(元素)。


从其他地图创建 HashMap

在 Java 中,我们还可以从其他映射创建哈希映射。例如,

import java.util.HashMap;
import java.util.TreeMap;

class Main {
  public static void main(String[] args) {

    // create a treemap
    TreeMap<String, Integer> evenNumbers = new TreeMap<>();
    evenNumbers.put("Two", 2);
    evenNumbers.put("Four", 4);
    System.out.println("TreeMap: " + evenNumbers);

    // create hashmap from the treemap
    HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
    numbers.put("Three", 3);
    System.out.println("HashMap: " + numbers);
  }
}

输出

TreeMap: {Four=4, Two=2}
HashMap: {Two=2, Three=3, Four=4}

在上面的例子中,我们创建了一个 TreeMap 命名为 evenNumbers .注意表达式,

numbers = new HashMap<>(evenNumbers)

在这里,我们正在创建一个 HashMap 使用 TreeMap 命名的数字 .要了解有关树形图的更多信息,请访问 Java TreeMap。

注意 :在创建 hashmap 时,我们可以包含可选参数:容量 和负载系数 .例如,

HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

在这里,

如果不使用可选参数,则默认容量 将是 16 和默认的负载系数 将是 0.75 .


java

  1. Java 运算符
  2. Java 评论
  3. Java if...else 语句
  4. Java for-each 循环
  5. Java break 语句
  6. Java 字符串
  7. Java 接口
  8. Java 匿名类
  9. Java try-with-resources
  10. Java 注释
  11. Java 断言
  12. Java 向量