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
),等等:
示例
创建一个名为people
的HashMap
对象,键是字符串类型,值是整数类型:
// 导入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));
}
}
}