Java HashMap


章节


Java HashMap

你从上一章了解到,ArrayList把数据存储为有序列表,使用索引号(int类型)访问它们。

而HashMap将数据存储为“键/值”对,通过键(例如:字符串,键类似索引)访问它们。

HashMap的键值对中,键是一个对象,对应的值也是一个对象,通过键可以访问到值。

示例

创建一个名为capitalCities的HashMap对象,键和值都是字符串类型:

import java.util.HashMap; // 导入HashMap类

HashMap<String, String> capitalCities = new HashMap<String, String>();

如果你不知道“包”是什么,请参考我们的Java包教程

添加项目

HashMap类有许多方法。例如,要添加项目,可以使用put()方法:

示例

// 导入HashMap类
import java.util.HashMap;

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

    // 创建一个名为capitalCities的HashMap对象
    HashMap<String, String> capitalCities = new HashMap<String, String>();

    // 添加键和值(Country, City)
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");
    System.out.println(capitalCities); 
  }
}

访问项目

要访问HashMap中的值,使用get()方法,传入键:

示例

capitalCities.get("England");

删除项目

要删除一个项目,使用remove()方法,传入键:

示例

capitalCities.remove("England");

要删除所有项目,请使用clear()方法:

示例

capitalCities.clear();

HashMap大小

要知道有多少项,可以使用size()方法:

示例

capitalCities.size();

遍历HashMap

使用for-each遍历HashMap

注意: 如果只需要键,可使用keySet()方法; 只需要值,使用values()方法:

示例

// 打印键
for (String i : capitalCities.keySet()) {
  System.out.println(i);
}

示例

// 打印值
for (String i : capitalCities.values()) {
  System.out.println(i);
}

示例

// 打印键和值
for (String i : capitalCities.keySet()) {
  System.out.println("key: " + i + " value: " + capitalCities.get(i));
}

其他类型

HashMap中的键和值实际上都是是对象。在上面的例子中,我们使用了“String”类型的对象。记住,Java中的字符串是对象(而不是基本类型)。

要使用其他类型,例如int,必须指定一个等效的包装类: Integer类,其他基本类型对应的包装类有: Boolean (boolean),Character (char), Double (double),等等:

示例

创建一个名为peopleHashMap对象,键是字符串类型,值是整数类型:

// 导入HashMap类
import java.util.HashMap;

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

    // 创建一个名为people的HashMap对象
    HashMap<String, Integer> people = new HashMap<String, Integer>();

    // 添加键和值 (Name, Age)
    people.put("John", 32);
    people.put("Steve", 30);
    people.put("Angie", 33);

    for (String i : people.keySet()) {
      System.out.println("key: " + i + " value: " + people.get(i));
    }
  }
}
原文地址:https://www.cnblogs.com/jinbuqi/p/11736556.html