目录
四种方式
1、分别遍历Key和Val
public class HashMapTest {
public static void main(String[] args) {
HashMap<String , Integer> hashMap = new HashMap<>();
hashMap.put("张三",17);
hashMap.put("李四",66);
hashMap.put("王五",56);
hashMap.put("贾六",18)
m1(hashMap);
}
public static void m1(HashMap hm){
//获取所有Key
Set<String> keys = hm.keySet();
for (String key : keys) {
System.out.println(key);
}
//获取所有values
Collection<Integer> ages = hm.values();
for (Integer age : ages) {
System.out.println(age);
}
}
}
2、使用迭代器Iterator
public static void m2(HashMap hm){
Set<Map.Entry<String ,Integer>> entries = hm.entrySet();
for (Iterator<Map.Entry<String ,Integer>> e = entries.iterator();e.hasNext();) {
Map.Entry<String ,Integer> t =e.next();
System.out.println("Key:"+t.getKey()+" "+"Val:"+t.getValue());
}
}
3、通过get(不建议因为使用了两次迭代器,效率慢)
public static void m3(HashMap hm){
Set<String> keys = hm.keySet();//第一次使用
for (String key : keys) {
System.out.println(key+"="+hm.get(key));//第二次使用
}
}
4、 使用默认接口(forEach)
default void forEach (BiConsumer<? super K,? super V> action)
对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
BiConsumer消费接口:
抽象方法: void accept (T t, U u)对给定的参数执行此操作。
参数:
t key
u value
public static void m4(HashMap hm){
hm.forEach((key,val)->{
System.out.println("key:"+key+"="+val);
});
}