今天学了一下集合框架中的Map接口,只能说是浅尝辄止,总结了几个用法,可能很多人和我一样,刚接触的时候满头雾水,希望这篇文章能给你带来一点收获。
简单来说:Map有Key和Value,而Key和Value组合起来一个组就是entry,如果想取出这个组里的Key和Value就用entry的迭代器即可。
那么什么是迭代器呢?
Java集合框架的集合类,大家通常会称之为容器,包括ArrayList、LinkedList、HashSet...每个容器都有自己的特点,ArrayList底层维护的是一个数组,HashSet依赖的是哈希表,每种容器都有自己特有的数据结构,因为容器的内部结构不同,很多时候可能不知道该怎么去遍历一个容器中的元素,所以为了使对容器内元素的操作更为简单,java引入了迭代器模式!
把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。
对于一个数组我们就是通过索引即index进行处理的,例如
1 int array[] = new int[5]; 2 for (int i = 0; i < array.length; i++) { 3 System.out.println(array[i]); 4 }
所以,我们可以理解迭代器就是通过遍历来抽取集合中你想要的东西,它总是用同一种逻辑来遍历集合,使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator(迭代器)来维护,客户端不用直接和集合进行打交道,而是控制Iterator向它发送向前向后的指令,就可以遍历集合。
言归正传,Map类中提供了一个entrySet()方法,这个方法返回了一个Map.Entry实例化后的对象集,然后Map.Entry类提供了一个getKey()方法和一个getValue()方法。
今天就先介绍3种比较常用的方法:
map.values();获取value集合
map.keySet();获取Key集合,并通过Key获取对应的Value值
map.entrySet();获取键值对列表
下面我们来看一下如何实现的:
package EntrySet;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class entry {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String, String> map = new HashMap<>();
map.put("a", "1"); //向集合中插入元素
map.put("b", "2");
for(Entry<String, String> s:map.entrySet()){
System.out.println("键值对 " +s);
}for(String s: map.values()){
System.out.println(" values集合 " + s);//取出所有的value值
}for(String s:map.keySet()){
System.out.println("Key集合" + s); //取出所有的Key值
System.out.println(map.get(s)); //取出所有的Key对应的Value值
}
}
}
如果大家还不了解的话可以打断点Debug一下,看看数据是如何变化的,会加深我们的理解。希望对大家有帮助,谢谢