亿迅智能制造网
工业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一个 作为键和 Integer1 作为 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++ 相关联 .自2C++ 无关 ,它不会删除条目。

要了解更多信息,请访问 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 向量