1.HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
2.HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
3.HashMap 是无序的,即不会记录插入的顺序。
4.HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
5.HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。
Map<String ,String> map =Map.of("zichuan","zichuan.com","shiyu","shiyu.com")
| Key | value |
| zichuan | zichuan.com |
| shiyu | shiyu.com |
Map<Integer ,String> map =Map.of("1","zichuan.com","2","shiyu.com")
| Key | value |
| 1 | zichuan |
| 2 | shiyu |
6. HashMap 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。
基本类型对应的包装类表如下:
| 基本类型 | 引用类型 |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
7.以下实例我们创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value:
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
实例:
添加键值对(key-value)可以使用 put() 方法:
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
System.out.println(sites);
}
}
执行上述代码输出结果:
{1=ranyeqi, 2=mingchuan, 3=shiyu, 4=zichuan}
8.创建一个整型(String)的 key 和 整型(String)的 value:
package mine;
import java.util.HashMap;
public class HashMapTest02 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<String, String> sites =new HashMap<String, String>();
//添加键值对
sites.put("one", "ranyeqi");
sites.put("two", "mingchuan");
sites.put("three", "shiyu");
sites.put("four", "zichuan");
System.out.println(sites);
}
}
输出结果:
{four=zichuan, one=ranyeqi, two=mingchuan, three=shiyu}
访问元素:
1. 可以使用 get(key) 方法来获取 key 对应的 value:
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
System.out.println(sites.get(3));//输出shiyu
}
}
2. 可以使用 remove(key) 方法来删除 key 对应的键值对(key-value):
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
sites.remove(1);
System.out.println(sites);//输出:{2=mingchuan, 3=shiyu, 4=zichuan}
}
}
3. 删除所有键值对(key-value)可以使用 clear 方法:
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
sites.clear();
System.out.println(sites);//输出:{}
}
}
4. 计算 HashMap 中的元素数量可以使用 size() 方法
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
System.out.println(sites.size());//输出:4
}
}
5. 可以使用 for-each 来迭代 HashMap 中的元素。
6. 如果只想获取 key,可以使用 keySet() 方法,如果只想获取 value,可以使用 values() 方法。
package mine;
import java.util.HashMap;
public class HashMapTest01 {
public static void main(String[] args) {
//创建HashMap对象 Sites
HashMap<Integer, String> sites =new HashMap<Integer, String>();
//添加键值对
sites.put(1, "ranyeqi");
sites.put(2, "mingchuan");
sites.put(3, "shiyu");
sites.put(4, "zichuan");
// 输出 key 和 value
for (int i : sites.keySet()) {
System.out.println("key: "+i +" value: "+sites.get(i));
}
}
}
502

被折叠的 条评论
为什么被折叠?



