| 
 | 
 
3Java金币 
 本帖最后由 瀚海扁舟 于 2015-1-24 00:50 编辑  
 
在java中Set<T>是一个接口,但是在使用HashMap时,却有一个keySet()的方法,返回的是Set对象,而且Set<String> keySet=hm.keySet();能够通过编译,并运行,很是不理解,Set是接口,接口不是不能实例化么?以下是我的代码 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Set; 
 
public class MainActivity 
{ 
 
        public static void main(String[] args) 
        { 
                HashMap<String, String> hm = new HashMap<String, String>(); 
                hm.put("张三", "北京"); 
                hm.put("李四", "天津"); 
                hm.put("王五", "上海"); 
                 
                Set<String> keySet=hm.keySet(); 
                Iterator<String> it = keySet.iterator(); 
                while(it.hasNext()) { 
                        System.out.println(it.next()); 
                } 
        } 
} 
 
 |   
 
 
最佳答案
查看完整内容 
您好,HashMap里面的keySet()方法,并不是直接返回Set对象,而是返回的是实现Set接口的KeySet类的对象实例。
下面是keSet()方法的具体源码: 
 
 
 
 
 
 
 |