如何设置Map.entrySet()值

时间:2015-02-24 06:45:54

标签: java

我对地图界面感到困惑。它必须将entrySet()方法用于集合视图(或使用迭代器)。 entrySet()返回一个包含其Map元素的Set。同样,这些Set元素中的每一个都是Map.Entry对象。怎么可能?由于Set只包含一个字段,而Map.Entry是一个键值对?你能简单解释一下示例&流动。

3 个答案:

答案 0 :(得分:2)

Set包含某种引用类型的元素。 Map.Entry是引用类型,可以用作Set

的元素

答案 1 :(得分:0)

想象一下,您拥有一个包含键和值的数据结构。一个值的一个键,一个键的一个值。

Map<K,V>是此数据结构的接口。它允许按键获取价值。

Set<Map.Entry<K,V>>是相同数据结构的接口。它允许获得所有键值对。

答案 2 :(得分:0)

根据Orcale文档:Map的entrySet()返回map中包含的映射的Set视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。 Map.entrySet方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是来自此collection-view的迭代器。这些Map.Entry对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是不确定的。 请按照以下代码段进一步说明: -

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapEntry {
    public static void main(String... q){
        Map<String,Integer> mapObj = new HashMap<String,Integer>();

        mapObj.put("1", new Integer(1));
        mapObj.put("2", new Integer(2));
        mapObj.put("3", new Integer(3));
        mapObj.put("4", new Integer(4));

       // First Approach  
       Set outMap = mapObj.entrySet();
       for(Map.Entry<String,Integer> tempMap : mapObj.entrySet()){
           System.out.println("KEY : "+tempMap.getKey());
           System.out.println("VALUE : "+tempMap.getValue());
       }

       // Second Approach
       for(Iterator it = mapObj.entrySet().iterator(); it.hasNext();){
           Map.Entry me = (Map.Entry)it.next();
           System.out.println("2nd Approach - Key : "+me.getKey());
           System.out.println("2nd Approach - Value : "+me.getValue());
       }
    }
}

希望这有帮助。