java解析遍历Map集合(其实现子类)的两种方式
1 通过键去找对应的值
1.1 通过keySet()方法获取集合实现类的对象后,通过迭代器去进行遍历
1.1.1 核心思路
a 通过keySet()方法去获取map集合中所有的键的Set集合
b.通过get(key)方法去得到键所对应的的值(value)
c.集合肯定不止一个键值对,所以需要通过循环去进行遍历
迭代器对象为: Set集合.iterator()方法
循环条件为: 迭代器对象.hasNext()
循环体语句为:
Key类型 key=迭代器对象.next();
map集合实现类的对象名.get(key);
1.1.2 示例代码
package Work;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
//加入几个键值对数据
map.put(1,"张飞");
map.put(2,"刘备");
map.put(3,"关羽");
map.put(4,"黄忠");
map.put(5,"马超");
//通过键去获取对应的值,从而实现map集合元素的遍历
Set<Integer> integers = map.keySet();
Iterator<Integer> iterator = integers.iterator();
while(iterator.hasNext()){
Integer next = iterator.next();
System.out.println(next+"======"+map.get(next));
}
}
}
1.1.3 示例代码运行截图
1.2 通过keySet()方法获取集合实现类的对象后,通过foreach循环去进行遍历
1.2.1 核心思路
a 通过keySet()方法获取键所对应的Set集合
b.通过foreach循环去遍历Set集合,并得到Set集合里面的key值
c.在遍历Set集合元素的过程中,通过map实现类对象.get(key)获取对应的value
d.然后把得到的key和value进行输出打印即可
1.2.2 示例代码
package Work;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
//加入几个键值对数据
map.put(1,"张辽");
map.put(2,"乐进");
map.put(3,"于禁");
map.put(4,"张郃");
map.put(5,"徐晃");
//通过键去获取对应的值,通过foreach循环和map集合实现类.get(Key)方法去打印相对应的键值对内容
Set<Integer> integers = map.keySet();
for (Integer key:integers
) {
System.out.println(key+"========="+map.get(key));
}
}
}
1.2.3 示例代码运行截图
2 使用entrySet方法
2.1 最终通过迭代器去进行遍历
2.1.1 核心思路
a.使用map集合的实现类对象.entrySet方法去获取含有所有键值对信息的set集合
b.使用set集合对象.iterator得到一个迭代器对象iterator
c.通过iterator对象.hashNext()方法判断Set集合是否还有Node对象,用next()方法得到里面的node对象
d.通过Node对象.getKey方法获取对应(集合位置)的键
e.通过Node对象.getValue方法获取对应(集合位置)的值
f.打印得到键值对信息
2.1.2 示例代码
package Work;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
//加入几个键值对数据
map.put(1,"甘宁");
map.put(2,"太史慈");
map.put(3,"周泰");
map.put(4,"程普");
map.put(5,"凌统");
//通过entrySet方法获取一个含有所有键值对信息的Set集合,信息存放在Node对象里面
//可以通过Node对象.getKey获取键,可以通过Node对象.getValue获取值
//Map.Entry这个需要记一下,这个就相当于Node对象,这相当于多态,是一种固定用法
//所有的对象都需要进行Map.Entry<Integer,String>修饰
Set<Map.Entry<Integer, String>> s1 = map.entrySet();
Iterator <Map.Entry<Integer,String>> iterator=s1.iterator();
while(iterator.hasNext()){
//Node对象无需再外面加<>,前面是约束类似就需要加上两对<>
Map.Entry<Integer,String> next=iterator.next();
System.out.println(next.getKey()+"========"+next.getValue());
}
}
}
2.1.3 示例代码运行截图
2.2 最终通过foreach循环去进行遍历
2.2.1 核心思路
a 使用entrySet()方法获取含有键值对信息的Set集合
b 使用foreach对得到的Set集合进行遍历
c 然后通过拿到的Node对象调用getKey()和getValue获取对应的键值对内容
d 把拿到的键值对内容进行依次打印就行。
2.2.2 示例代码
package Work;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
//加入几个键值对数据
map.put(1,"梦琪");
map.put(2,"亚瑟");
map.put(3,"刘邦");
map.put(4,"项羽");
map.put(5,"虞姬");
//通过entrySet方法获取一个含有所有键值对信息的Set集合,信息存放在Node对象里面
//可以通过Node对象.getKey获取键,可以通过Node对象.getValue获取值
//Map.Entry这个需要记一下,这个就相当于Node对象,这相当于多态,是一种固定用法
Set<Map.Entry<Integer, String>> s1 = map.entrySet();
for (Map.Entry<Integer, String> e:
s1) {
System.out.println(e.getKey()+"========"+e.getValue());
}
}
}