Map简介

本文介绍了Map接口的基本概念、特点及其提供的集合视图、常用操作等核心信息。
Map简介

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

  Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

常用操作说明:

void clear() 从此映射中移除所有映射关系(可选操作)。

boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。

boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。

Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。

boolean equals(Object o) 比较指定的对象与此映射是否相等。

V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

int hashCode() 返回此映射的哈希码值。

boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。

Set<K> keySet() 返回此映射中包含的键的 Set 视图。

V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。

void putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。

V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

int size() 返回此映射中的键-值映射关系数。

Collection<V> values() 返回此映射中包含的值的 Collection 视图。

Map的一般用法

1.声明一个Map:

Map map = new HashMap();

2.向map中放值,注意: map是key-value的形式存放的,如:

map.put("sa","dd");

3.从map中取值:

String str = map.get("sa").toString,
结果是: str = "dd'

4.遍历一个map,从中取得key和value:

Map m= new HashMap();
for(Object obj : map.keySet()){
Object value = map.get(obj );
}
### Guava库中Map简介用法 Guava 是 Google 提供的一个开源 Java 库,其中包含了许多实用工具集合扩展。Guava 的 `Map` 相关功能提供了多种增强版的集合类型,以满足不同的编程需求。 #### 1. ImmutableMap `ImmutableMap` 是 Guava 提供的一种不可变(immutable)的 `Map` 实现。它通过提供线程安全性不可修改性,适用于需要固定数据结构的场景。以下是一个简单的构造方式: ```java import com.google.common.collect.ImmutableMap; ImmutableMap<String, Integer> map = ImmutableMap.of("a", 1, "b", 2); ``` 上述代码展示了如何使用 `of` 方法快速创建一个不可变的 `Map`[^1]。需要注意的是,`ImmutableMap` 的内容一旦创建便无法更改,任何试图修改的操作都会抛出异常。 #### 2. HashBiMap `HashBiMap` 是 Guava 提供的一种双向映射(bidirectional map)。与普通的 `Map` 不同,`HashBiMap` 支持通过值反向查找键,从而实现双向关联。以下是一个示例: ```java import com.google.common.collect.HashBiMap; HashBiMap<String, String> biMap = HashBiMap.create(); biMap.put("key1", "value1"); String key = biMap.inverse().get("value1"); // 反向查找键 ``` 通过 `inverse()` 方法,可以轻松地将 `HashBiMap` 转换为反向映射,从而实现从值到键的查找[^2]。 #### 3. Table (双键 Map) Guava 还提供了一个名为 `Table` 的接口,用于表示具有两个键的多维映射。`Table` 的典型实现是 `HashBasedTable` 或 `TreeBasedTable`。以下是一个示例: ```java import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; Table<String, String, Integer> table = HashBasedTable.create(); table.put("row1", "column1", 1); table.put("row1", "column2", 2); Integer value = table.get("row1", "column1"); // 获取值 ``` `Table` 接口允许开发者根据行键列键来存储检索数据,非常适合处理二维数据结构[^3]。 #### 4. Cache Expiring Map Guava 提供了缓存支持,包括基于时间过期的 `Cache` 功能。虽然严格意义上不属于 `Map` 的范畴,但其设计灵感来源于 `Map`。以下是一个简单示例: ```java import com.google.common.cache.CacheBuilder; import java.util.concurrent.TimeUnit; LoadingCache<String, String> cache = CacheBuilder.newBuilder() .expireAfterWrite(10, TimeUnit.MINUTES) .build(new CacheLoader<String, String>() { @Override public String load(String key) throws Exception { return fetchValue(key); // 自定义加载逻辑 } }); ``` 此示例展示了如何创建一个在写入后 10 分钟过期的缓存[^4]。 ### 总结 Guava 的 `Map` 扩展功能丰富多样,涵盖了不可变 `Map`、双向映射、双键 `Map` 以及缓存等功能。这些工具能够显著简化开发过程,并提升代码的可维护性性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值