HashMap实现,其中有两个类的输入

时间:2015-11-15 08:43:35

标签: java hashmap

hashmap声明如下:

HashMap<Employee, Hobby> hm = new HashMap<Employee, Hobby>()

有一个业余爱好班和员工班。 我申请了一个方法:

public void addEmployees(HashMap<Employee, Hobby> hm)
{
    public void addEmployees(int num, HashMap<Employee, Hobby> hm)
    {
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i <= num; i++)
        {
            System.out.println("Enter name of employee");
            String name = sc.next();
            hm.put(name);
        }
    }
}

我在hm.put(name)行收到错误,我不知道如何在这里包含Hobby类属性作为值。

2 个答案:

答案 0 :(得分:1)

您的代码存在两个问题。首先,您无法创建嵌套方法定义。另一个问题是您使用put方法 - 它要求您指定键和值。您的HashMap是从EmployeeHobby的地图,因此您需要首先传递员工参数,然后再传递业余爱好:

hm.put(new Employee(name), new Hobby(hobby));
       ^------key-------^  ^----value-----^

您可能需要先从用户那里获得爱好,就像从输入中阅读name一样。

与问题没有直接关系,但您的for循环似乎也不正确 - 您将比为num指定的参数多一个提示。

for(int i=0;i<=num;i++)

应该是

for (int i = 0; i < num; i++)
                  *

答案 1 :(得分:1)

在java中添加地图时,该方法需要两个参数

System.out.println("Enter name of employee");
String name=sc.next();
System.out.println("Enter hobby");
String hobby=sc.next();
hm.put(new Employee(name),new Hobby(hobby));

所以在你的情况下你需要这样的东西

boolean def_english = Locale.getDefault().getISO3Language().equals(Locale.ENGLISH.getISO3Language());