Java中MAP的使用

java.util 中的集合类包含 Java 中某些最常用的类。

 最常用的集合类是 List 和 Map。 

List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。 List 适用于按数值索引访问元素的情形。  

Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

MAP中的接口

Map 接口定义了四种类型的方法,每个 Map 都包含这些方法。 

覆盖的方法:

我们将这 Object 的这两个方法覆盖,以正确比较 Map 对象的等价性。

equals(Object o) 比较指定对象与此 Map 的等价性

hashCode() 返回此 Map 的哈希

Map 更新方法: 可以更改 Map 内容。  

clear() 从 Map 中删除所有映射

remove(Object key) 从 Map 中删除键和关联的值

put(Object key, Object value) 将指定值与指定键相关联 ,想修改键对应的值,直接用这个方法将原来的键值覆盖掉即可。

putAll(Map t) 将指定 Map 中的所有映射复制到此 map

查看 Map  迭代 Map 中的元素不存在直接了当的方法。

如果要查询某个 Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该 Map 的“视图”。

有三种可能的视图

所有键值对 — 参见 entrySet()

所有键 — 参见 keySet()

有值 — 参见 values()

前两个视图均返回 Set 对象,第三个视图返回 Collection 对象。

就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,您必须获得一个 Iterator 对象。

因此,要迭代 Map 的元素,必须进行比较烦琐的编码  

Iterator keyValuePairs = aMap.entrySet().iterator();

Iterator keys = aMap.keySet().iterator();

Iterator values = aMap.values().iterator();  


entrySet() 返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素

keySet() 返回 Map 中所包含键的 Set 视图。 删除 Set 中的元素还将删除 Map 中相应的映射(键和值)

values() 返回 map 中所包含值的 Collection 视图。 删除 Collection 中的元素还将删除 Map 中相应的映射(键和值) 


Map 访问和测试方法: 这些方法检索有关 Map 内容的信息但不更改 Map 内容。  

get(Object key) 返回与指定键关联的值 

containsKey(Object key) 如果 Map 包含指定键的映射,则返回 true 

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

isEmpty() 如果 Map 不包含键-值映射,则返回 true 

size() 返回 Map 中的键-值映射的数目


Code:

package maps;


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


public class TestMaps {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("Chinese", "good");
map.put("Math", "Excellent");
map.put("English", "Liquit");

System.out.println(map.size());

for (Object o: map.keySet()){
System.out.println(map.get(o).toString());
}

Iterator i = map.entrySet().iterator();
while(i.hasNext()){
Map.Entry entry = (Map.Entry) i.next();
System.out.println(entry.getKey().toString());
System.out.println(entry.getValue().toString());
}

Iterator j = map.keySet().iterator();
while(j.hasNext()){
System.out.println(j.next().toString());
}

Iterator k = map.values().iterator();
while(k.hasNext()){
System.out.println(k.next().toString());
}

System.out.println("Contains Key Chinese: "+map.containsKey("Chinese"));

map.remove("Chinese");

System.out.println("Contains Key Chinese: "+map.containsKey("Chinese"));

System.out.println("Get value of Math:"+map.get("Math"));
map.put("Math", "Good");
System.out.println("Get value of Math:"+map.get("Math"));


}


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值