使用hashmap的java字典

使用hashmap的java字典,java,hashmap,set,Java,Hashmap,Set,我写了一个小电话簿只是为了练习我的java知识。 问题在于下面的代码中,我希望代码在调用getname方法时显示名称和号码。我是一个初学者,我真的希望使这个项目的工作 public class Phone { private HashMap<String, Integer> name; HashMap<String, Integer> namelist = new HashMap<String, Integer>(); Integer

我写了一个小电话簿只是为了练习我的java知识。 问题在于下面的代码中,我希望代码在调用getname方法时显示名称和号码。我是一个初学者,我真的希望使这个项目的工作

public class Phone {

    private HashMap<String, Integer> name;
    HashMap<String, Integer> namelist = new HashMap<String, Integer>();
    Integer number;
    String names;

    /**
     * @return the name
     */
    Phone() {

        // get user to enter name and number
        Scanner scan = new Scanner(System.in);
        System.out.println("enter name ");
        names = scan.nextLine();

        System.out.println("enter number ");
        String nums = scan.nextLine();
        number = Integer.parseInt(nums);

        namelist.put(names, number); // set key and value to namelist object;

        setName(namelist); //

    }

    void printValue() {

        System.out.print(namelist.get(names));

    }

    public HashMap<String, Integer> getName() {
        return name;
    }

    /**
     * @param names
     *            the name to set
     */
    public void setName(HashMap<String, Integer> names) {
        this.name = names;
    }

    public static void main(String[] args) {

        Phone ph = new Phone();
        Gui window = new Gui();
        System.out.println(ph.getName());
        ph.printValue();


    }

}
公共类电话{
私有HashMap名称;
HashMap namelist=新的HashMap();
整数;
字符串名;
/**
*@返回名称
*/
电话(){
//让用户输入名称和编号
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入名称”);
name=scan.nextLine();
System.out.println(“输入编号”);
字符串nums=scan.nextLine();
number=Integer.parseInt(nums);
namelist.put(names,number);//设置namelist对象的键和值;
设置名称(名称列表)//
}
void printValue(){
System.out.print(namelist.get(names));
}
公共HashMap getName(){
返回名称;
}
/**
*@param名称
*要设置的名称
*/
public void setName(HashMap名称){
this.name=名称;
}
公共静态void main(字符串[]args){
电话ph=新电话();
Gui窗口=新建Gui();
System.out.println(ph.getName());
printValue()博士;
}
}
您的
getName()
方法应该返回字符串,而不是HashMap;在返回名称和数字之前,需要将它们连接起来,例如,
返回名称+“;”+Integer.toString(数字)

我假设通过说“显示姓名和号码”,您希望显示手机中存储的所有联系人。因此,这个问题看起来像是如何打印hashmap中的所有元素

        for(String name : map.keySet()){
        System.out.println("name is " + name);
        System.out.println("contact is " + map.get(name));}

这里有一个更简单的答案:

System.out.println(map);
这将调用Map上的toString()方法,该方法调用键和值的toString()方法,该实现报告键/值配对如下:

“乔”->“123456789”

唯一需要注意的是,默认情况下不会在元素之间放置换行符。如果您想这样做,您可以:

for(Map.Entry<String,Integer> entry: map.Entry())
    system.out.println(entry);
for(Map.Entry:Map.Entry())
系统输出打印项次(输入);

为什么需要2个哈希映射?您有一些基本问题。
Phone()
构造函数应该只初始化
Phone
对象。在
main()
中的循环中,可能会添加名称/编号对
getName()
应以您要查找的名称为参数,并返回相应的电话号码。您的类应命名为PhoneDirectory,包含一组PhoneEntry类,定义为类Person的一个实例和:a字符串