地图奇怪的行为

时间:2014-11-23 09:35:55

标签: java map

我收到一个语法错误,我无法解决。我使用的是Java 1.8。

import java.util.*;

public class datatypetest 
{
    public static void main(String args[])
    {
        Map map1 = new HashMap();
        map1.put("1", "Deepak");
        map1.put("2", "Ajay");
        System.out.println(map1);
        System.out.println(map1.keySet());


        for (Map.Entry<String, String> entry : map1.entrySet())
        {
            System.out.println(entry.getKey() + "/" + entry.getValue());
        }

    }
}

但是我收到了这个错误:

incompatible types: Object can not be converted to Entry<String,String>

3 个答案:

答案 0 :(得分:4)

您创建了原始地图:

Map map1 = new HashMap();

将其更改为:

Map<String,String> map1 = new HashMap<String,String>();

如果您将地图实例化为原始Map,则无法在循环中使用Map.Entry<String, String>(您只能使用原始Map.Entry)。

答案 1 :(得分:1)

您需要使用泛型来避免此类冲突,即

Map<String, String> map1 = new HashMap<String, String>();

泛型提供类型安全。 此外,我在您的代码中发现您的班级名称并未遵循最佳做法。它确实必须从大写字母开始,因为它是整个JAVA世界的最佳实践

试试这个

import java.util.*;
public class DataTypeTest {
   public static void main(String args[]){
       Map<String, String> map1 = new HashMap<String, String>();
       map1.put("1", "Deepak");
       map1.put("2", "Ajay");
       System.out.println(map1);
       System.out.println(map1.keySet());

       for (Map.Entry<String, String> entry : map1.entrySet())
       {
           System.out.println(entry.getKey() + "/" + entry.getValue());
       }

   }
}  

快乐编程:)

答案 2 :(得分:0)

因为你已经创建了 Map map1 = new HashMap();
可以是任何类型(不仅仅是字符串),因此java不允许你向下转发它。

相关问题