Map是java中的接口,Map.Entry是Map的一个内部接口。
Java中Map存放的是许多个键值对的数据,而Map.Entry数据类型可以想象成Map中的一个键值对的数据,可以存放一个键与一个值,显然一个Map对象可以看成存储了多个Map.Entry的数据组
1、从Map中获取Map.Entry
通过Map.entrySet()
方法可以从指定的map对象中获取一个Set集合,集合中的元素是Map.Entry类型
public static void main(String[] args) {
Map<Integer,Integer>map=new HashMap<>();
map.put(1,1);
map.put(2,1);
map.put(3,1);
map.put(4,1);
for(Map.Entry<Integer,Integer> mEntry:map.entrySet()){
System.out.println("Entry中的键:" + mEntry.getKey() + " | Entry中的值:" + mEntry.getValue());
}
}
使用foreach遍历输出的结果:
mEntry.getKey()
:获取Entry中的键mEntry.getValue()
:获取Entry中的值
补充:同样可以使用Map.keySet()
和Map.valueSet()
的方法分别返回集合对象,该Set对象装有所有的key与Value的值
2、TreeMap中通过比较获取Map.Entry的方法
注意:以下方法均只在TreeMap中定义,Map接口没有定义
Map.ceilingEntry(T key) 返回Map第一个键值大于等于key的Entry
Map.floorEntry(T key) 返回Map所有键值小于等于key的Entry中键值最大的那一个Entry
public static void main(String[] args) {
TreeMap<Integer,String>map=new TreeMap<>();
map.put(1,"数据结构");
map.put(2,"计算机网络");
map.put(4,"计算机系统");
map.put(5, "计算机组成原理");
System.out.println(map.ceilingEntry(3).getValue());
System.out.println(map.floorEntry(3).getValue());
}
结果:
补充两个方法,与上面两个相似只不过返回的是key的值而不是Entry:
**Map.ceilingKey(T key) **
Map.floorKey(T key)