下面是完整的“java 中Map详解及实例代码”攻略。
什么是Map?
Map是一种用来存储键-值对数据的数据结构,常用于数据缓存、数据筛选等场景。
Map是一种抽象的数据类型,Java中通过接口Map来定义Map类型。Map接口的实现类有:HashMap、TreeMap、LinkedHashMap 等。
HashMap
什么是HashMap
HashMap 是 Java 中常用的散列表,常用于缓存、索引等场景。HashMap 继承了AbstractMap类,实现了Map、Cloneable、Serializable这些接口。
HashMap的特点
- HashMap 存储键值对,键是唯一的,如果重复了则覆盖,值可以为空。
- HashMap 使用哈希算法,支持快速访问和快速插入。
- HashMap 允许 null 键和 null 值。但为了避免 NullPointerException,建议不要使用 null 作为键。
HashMap的实现
HashMap 内部维护了一个 Entry 数组表,每个 Entry 内部包含了 key、value 和 next 三个属性,其中 next 指向的是下一个 Entry。
HashMap 通过哈希函数计算key的哈希值,根据哈希值摆放该 Entry 将要存放的位置,在决定存放位置时,若发现该位置已有 Entry,则通过next指针指向下一个 Entry ,依次类推,直到找到空位为止。同时,当HashMap大小超过阈值(默认是16),则会自动进行扩容。
HashMap的示例代码
import java.util.*;
public class HashMapExample {
public static void main(String[] args) {
//创建一个HashMap对象
Map<String, String> map = new HashMap();
//添加键值对
map.put("apple", "苹果");
map.put("banana", "香蕉");
map.put("peach", "桃子");
//获取键值对
String value1 = map.get("apple");
String value2 = map.get("banana");
String value3 = map.get("peach");
System.out.println("apple 对应的值为:" + value1);
System.out.println("banana 对应的值为:" + value2);
System.out.println("peach 对应的值为:" + value3);
//获取所有键的集合
Set<String> keySet = map.keySet();
System.out.println("所有键的集合为:" + keySet);
//获取所有值的集合
Collection<String> values = map.values();
System.out.println("所有值的集合为:" + values);
//删除键值对
map.remove("apple");
System.out.println("删除 apple 后,map 中的键值对为:" + map);
}
}
TreeMap
什么是TreeMap
TreeMap 是 Java的红黑树实现的一种Map,支持有序存储键值对。
TreeMap的特点
- TreeMap 中的所有键值对都是有序的。具体来说,存储在 TreeMap 中的键值对会按照键的自然顺序排列,或者根据构造函数中提供的 Comparator 进行排序。
- TreeMap 的键值对只保留了一份,即只有一个 key 对应一个 value,多次插入同一 key 值会覆盖之前的 value。
- TreeMap 中的键和值都不允许为 null。
TreeMap的实现
由于 TreeMap 内部是通过红黑树来实现的,因此它的查找、插入等操作的复杂度并不固定,而是取决于红黑树的高度。一棵高度为h的红黑树的高度大约为 2log(n+1)(其中n为节点总数),因此 TreeMap 的复杂度与节点数成对数关系。
TreeMap的示例代码
import java.util.*;
public class TreeMapExample {
public static void main(String[] args) {
//创建一个TreeMap对象
Map<String, String> map = new TreeMap();
//添加键值对
map.put("apple", "苹果");
map.put("banana", "香蕉");
map.put("peach", "桃子");
//获取键值对
String value1 = map.get("apple");
String value2 = map.get("banana");
String value3 = map.get("peach");
System.out.println("apple 对应的值为:" + value1);
System.out.println("banana 对应的值为:" + value2);
System.out.println("peach 对应的值为:" + value3);
//获取所有键的集合
Set<String> keySet = map.keySet();
System.out.println("所有键的集合为:" + keySet);
//获取所有值的集合
Collection<String> values = map.values();
System.out.println("所有值的集合为:" + values);
//删除键值对
map.remove("apple");
System.out.println("删除 apple 后,map 中的键值对为:" + map);
}
}
以上就是“java 中Map详解及实例代码”的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 中Map详解及实例代码 - Python技术站