import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class HashmapFind {
/*
* 分别遍历key和value
*/
private static void find1(HashMap<Integer,String> hash) {
// TODO 自动生成的方法存根
//得到所有的key
Set<Integer>keys= hash.keySet();
for(int key:keys) {
System.out.println(key);
}
//得到所有的value
Collection<String> values=hash.values();
for(String value:values) {
System.out.println(value);
}
}
/*
* 使用Iterator迭代器迭代,效率比较高:只遍历了一次,把key和value都放在了entry中
*/
private static void find2(HashMap<Integer, String> hash) {
// TODO 自动生成的方法存根
Set<Entry<Integer, String>> entries = hash.entrySet();
for(Iterator<Entry<Integer, String>> iterator = entries.iterator();iterator.hasNext();) {
Entry<Integer, String> entry = iterator.next();
System.out.println(entry.getKey()+"----"+entry.getValue());
}
}
/*
* get方式,效率低不建议,keySet其实是遍历了2遍
*/
private static void find3(HashMap<Integer, String> hash) {
// TODO 自动生成的方法存根
Set<Integer> keys = hash.keySet();
for(int key:keys) {
System.out.println(key+"----"+hash.get(key));
}
}
/*
* jdk8以后的map接口
* BiConsumer消费接口
*
* 1、foreach 是java5的新特性之一,在遍历数组,集合方面有很大用处。foreach不是一个关键词,而是把增强型的for语句称为foreach语句。
* 2、结构是: for(part1 : part2){ part3 }
*/
private static void find4(HashMap<Integer, String> hash) {
// TODO 自动生成的方法存根
hash.forEach((key,value)->System.out.println(key+"---"+value));
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
HashMap<Integer,String> hash=new HashMap<Integer,String>();
hash.put(1, "zhang");
hash.put(2, "li");
hash.put(3, "zhao");
find1(hash);
find2(hash);
find3(hash);
find4(hash);
}
}