Map.Entry的定义
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。通过这个集合的迭代器,获得每一个条目(唯一获取方式)的键或值并对值进行更改。
Map.Entry中的常用方法如下所示:
(1) Object getKey(): 返回条目的关键字
(2) Object getValue(): 返回条目的值
(3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值
package blog;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class TestEntry {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("1", "苹果");
map.put("2", "香蕉");
map.put("3", "桃子");
Iterator<Map.Entry<String,String>> iterator=map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String,String> stringEntry=iterator.next();
System.out.println("Key:"+stringEntry.getKey()+" Value:"+stringEntry.getValue());
}
//第二种遍历方法
for(Map.Entry<String,String> stringEntry:map.entrySet()){
System.out.println("Key:"+stringEntry.getKey()+" Value:"+stringEntry.getValue());
}
}
}
输出结果
Key:1 Value:苹果
Key:2 Value:香蕉
Key:3 Value:桃子
Process finished with exit code 0
有时候我们想要双重循环遍历Map里面的Key或者是Value,这个时候我们用迭代器是完成不了这个功能的。究其原因是因为,迭代器只能一直向前走。
那么我们可以用以下代码完成双重循环这个功能
package blog;
import java.util.*;
public class TestEntry {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("1", "苹果");
map.put("2", "香蕉");
map.put("3", "桃子");
map.put("11", "苹果1");
map.put("22", "香蕉2");
map.put("33", "桃子3");
List<String> list=new ArrayList<>(map.values());
for(int i=0;i<list.size();i++){
for(int j=i+1;j<list.size();j++){
System.out.println(list.get(j));
}
}
}
}