回 帖 发 新 帖 刷新版面

主题:[讨论]Map的问题

各位大侠好,我有两段代码请各位帮忙看看:
第一段:
public class testHash
{
    //创建一个映射表
    Map phoneBook=new HashMap();
    
    //类testHash的构造函数,参数是两个数组,形成键-值对
    public testHash(String[] numbers,String[] names)
    {
        for(int i=0;i<numbers.length;i++)
        {
            //把两个数组中的对应元素放入映射表中
            phoneBook.put(numbers[i],names[i]);
        }
    }
    
    public static void main(String[] args)
    {
        //准备数据
        String[] names={"Jack","John","Rose","Hanlun"};
        String[] numbers={"1234","2345","3456","4567"};
        
        //创建实例
        testHash ex=new testHash(numbers,names);
        
        //输出表中内容
        System.out.println("Map:   "+ex.phoneBook);
        
        //返回映射表的视图集
        Set s=ex.phoneBook.entrySet();
        
        //利用迭代器遍历视图集的内容
        for(Iterator i=s.iterator();i.hasNext();)
        {
            Map.Entry me=(Map.Entry)i.next();
            Object ok=me.getKey();
            Object ov=me.getValue();
            System.out.println("object:"+me);
            System.out.println("key:"+ok+"\t");
            System.out.println("value:"+ov);
        }
    }
}
这段程序运行正常,但由于我用的是JDK5,在编译时出现了有不安全隐患的提示了。但可以输出正确的结果。
我试着改了一下程序,就是第二个程序:
public class testHash
{
    //创建一个映射表
    HashMap phoneBook=new HashMap();
    
    //类testHash的构造函数,参数是两个数组,形成键-值对
    public testHash(String[] numbers,String[] names)
    {
        for(int i=0;i<numbers.length;i++)
        {
            //把两个数组中的对应元素放入映射表中
            phoneBook.put(numbers[i],names[i]);
        }
    }
    
    public static void main(String[] args)
    {
        //准备数据
        String[] names={"Jack","John","Rose","Hanlun"};
        String[] numbers={"1234","2345","3456","4567"};
        
        //创建实例
        testHash ex=new testHash(numbers,names);
        
        //输出表中内容
        System.out.println("Map:   "+ex.phoneBook);
        
        //返回映射表的视图集
        Set s=ex.phoneBook.entrySet();
        
        //利用迭代器遍历视图集的内容
        for(Iterator i=s.iterator();i.hasNext();)
        {
            Map.Entry me=(Map.Entry)i.next();
            Object ok=me.getKey();
            Object ov=me.getValue();
            System.out.println("object:"+me);
            System.out.println("key:"+ok+"\t");
            System.out.println("value:"+ov);
        }
    }
}
这段代码与第一段代码不同的是在代码段的第三行,我把Map改成了HashMap,即phoneBook这时是HashMap类对象,这时却出错了,在编译时出现,说构造函数里的“put”方法找不到。这是怎么回事。Map和HashMap中的put方法难道不是一回事呢?
谢谢各位大侠!

回复列表 (共1个回复)

沙发

你下面的代码没问题呀 我运行的跟第一个一样,而且我JDK版本跟你一样~~~
我是照着你的代码COPY下来的  没问题。。。你再试试~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册