Map集合遍历键找值方式
键找值方式:即通过元素中的键,获取键所对应的值
操作步骤与图解:
1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
2.遍历键的Set集合,得到每一个键
3.根据键,获取键所对应的值
package cn.itcast.demo01;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
* Map集合的遍历
* 利用键获取值
* Map接口中定义方法keySet
* 所有的键,存储到Set集合
*/
public class MapDemo01 {
public static void main(String[] args) {
/*
* map集合中键不能遍历,故采取map集合的方法keySet,转成Set集合,才能遍历
* getClass()(Object类的方法,意味着每个子类都有这个方法)返回这个类的全名
*
* 1.调用map集合的方法keySet,所有的键存储到Set集合中
* 2.遍历Set集合,获取Set集合中所有的元素(Map中的键) (可以用迭代器或者增强for循环来遍历Key)
* 3.调用map集合方法get,通过键获取到值
*/
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a", 11);
map.put("b", 12);
map.put("c", 13);
map.put("d", 14);
//1.调用map集合的方法keySet,所有的键存储到Set集合中
Set<String> set = map.keySet();
//[d, b, c, a]
System.out.println(set);
//class java.util.HashMap$KeySet
System.out.println("============================");
System.out.println(set.getClass());
System.out.println("============================");
//2.遍历Set集合,获取出Set集合中的所有元素(Map中的键)
Iterator<String> it = set.iterator();
while(it.hasNext()){
//it.next()返回Set集合元素,也就是Map中的键
//3.调用Map集合方法get,通过键获取到值
String key = it.next();
Integer value = map.get(key);
System.out.println(key + "..." + value);
}
//使用增强for循环来遍历Set集合,可发现增强for循环更加简洁
//但是其实增强for循环编译后就是迭代器
System.out.println("============================");
//for(String key : set){
for(String key : map.keySet()){
Integer value = map.get(key);
System.out.println(key + "..." + value);
}
}
}
Entry键值对对象
在Map类设计时,提供了一个嵌套接口:Entry。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
Entry是Map接口中提供的一个静态内部嵌套接口。
getKey()方法:获取Entry对象中的键
getValue()方法:获取Entry对象中的值
entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。
Map集合遍历键值对方式
键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。
操作步骤与图解:
1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。
2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
3.通过键值对(Entry)对象,获取Entry对象中的键与值。
注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。
package cn.itcast.demo01;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
* Map集合获取方法
* entrySet方法,键值对映射关系(结婚证)获取
* 实现步骤:
* 1.调用map集合方法entrySet()将集合中的映射关系对象,存储到Set集合
* Set<Map.Entry<K,V>> entrySet()
* 2.迭代Set集合
* 3.获取出的Set集合的元素,是映射关系对象
* 4.通过映射关系对象方法getKey,getValue获取键值对
* 创建内部类对象: 外部类.内部类 = new
* 创建内部接口对象:外部接口.内部接口
*/
public class MapDemo02 {
public static void main(String[] args) {
//Map中常用的集合(已知实现类)为HashMap集合、LinkedHashMap集合
Map<Integer,String> map = new HashMap<Integer,String>();
//V put(K key, V value)
//将指定的值与此映射中的指定键关联(可选操作)。
map.put(1, "abc");
map.put(2, "bcd");
map.put(3, "cde");
//1.调用map集合方法entrySet()将集合中的映射关系对象,存储到Set集合
Set<Map.Entry<Integer, String>> set = map.entrySet();
//class java.util.HashMap$EntrySet
//getClass()(Object类的方法,意味着每个子类都有这个方法)返回这个类的全名
System.out.println(set.getClass());
System.out.println("============================");
System.out.println(set);
System.out.println("============================");
//2.迭代Set集合
Iterator<Map.Entry<Integer, String>> it = set.iterator();
while(it.hasNext()){
//3.获取出的Set集合的元素,是映射关系对象
//it.next()获取的是什么对象,取出来也是Map.Entry键值对对象
Map.Entry<Integer, String> entry = it.next();
//4.通过映射关系对象方法getKey(),getValue()获取键值对
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "..." + value);
}
System.out.println("============================");
//增强for循环,Iterable接口下所有实现类都能遍历,而Iterable下面子类没有Map
//我们增强for循环是遍历set,不能遍历Map集合
for(Map.Entry<Integer, String> entry : map.entrySet()){
System.out.println(entry.getKey() + "..." + entry.getValue());
}
}
}