Map.Entry简析
Map.Entry<K,V>实际上是内部的一个静态类,作用是封装Map集合中的一组“键值对对象”。
从源码简单来看,这个内部类是如下的结构:
// 基于jdk1.8
// 代码是简写,抽出有意义部分
// 接口中如下:
interface Map<K,V>{
interface Entry<K,V>{
}
}
// 实现类中如下:
class HashMap<K,V> implements Map<K,V>{
static class Node<K,V> implements Map.Entry<K,V>{
}
}
因而,平常我们见到的Map.Entry<K,V>和Entry<K,V>的用法都是正确的。前者是父类引用指向子类对象,后者是直接获取子类对象,达到的效果其实是相同的。后者可采用jdk1.5的新特性静态导入的导包方式。(但从运用上看,似乎不静态导入也是没有问题的)
一.Map类型
方式1:使用map.entrySet方法
for(Map.Entry<String,Object> entry : map.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
方式2:使用iterator
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String, Object> entry = iterator.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
方式三:foreach
map.forEach(new BiConsumer<String, JobDescription>() {
@Override
public void accept(String s, JobDescription jobDescription) {
System.out.println("键"+s);
System.out.println("值"+jobDescription);
}
});
箭头函数写法:
map.forEach((k,v)->{
System.out.println("键"+k);
System.out.println("值"+v);
});
二.list类型
1.迭代器迭代,iterator
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
2.增强for循环
for(String s : list){
System.out.println(s);
}
3.普通for循环
for (int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
三. Set类型
1.迭代器方式
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
2.增强for循环(略)
四. 数组遍历
1.增强for循环
for (String s : arrays){
System.out.println(s);
}
2.普通for循环
for (int i=0; i<arrays.length; i++){
System.out.println(arrays[i]);
}