java - HashMap问题,打印邻居

标签 java hashmap

我正在研究 HashMap。我的代码可以编译,但是当我运行它时,我没有得到我应该期望的结果。我的 printAllNeighborsgetNeighbor 代码不起作用。谁能帮我。我想我明白我在做什么,这就是我感到困惑的原因。

import java.util.HashMap;
public class House
{ 
    private int streetNumber;
    private String streetName;
    private String owners;
    HashMap <String, House> myNeighbors; 

    public House (int streetNumber, String streetName, String lastName)
    {
        streetNumber = streetNumber;
        streetName = streetName;
        lastName = owners;
        myNeighbors = new HashMap <String, House> (); 
    }
    public int getStreetNumber()
    {
        return streetNumber;
    }
    public String getStreetName()
    {
        return streetName;
    } 
    public String getLastName()
    {
        return owners;
    }
    public void setStreetNumber(int streetNumber)
    {
        streetNumber =this.streetNumber;
    }
    public void setStreetName(String streetName)
    {
        streetName = this.streetName;
    } 
    public void setLastName(String lastName)
    {
        owners = lastName;
    }
    public void addNeighbor (String direction, House h) 
    {
        myNeighbors = new HashMap <String, House> ();
    }
    public House getNeighbor (String direction) 
    {
        if(direction.equals(direction)){
            return getNeighbor(direction);
        }
        else{            
            return null;
        }
    }
    public void printAllNeighbors()
    {
        for (String key : myNeighbors.keySet())
        {
            System.out.println( "\nkey: " + key + " value: " + myNeighbors.get(key));
        }
    }
    public String toString()
    {   
        return "Address: " + streetNumber + " " + streetName + "\nOwner: " + owners;  
    }
    public static void main (String [] args)
    {
        House whiteHouse = new House (1600, "Pennsylvania Ave", "Obama");
        House jerrysHouse = new House (1602, "Pennsylvania Ave", "Mabrito");
        House guentersHouse = new House (1604, "Pennsylvania Ave", "Tusch");
        House anasHouse = new House (1609, "Pennsylvania Ave", "Posada");

        whiteHouse.addNeighbor("east", jerrysHouse);
        whiteHouse.addNeighbor("south", guentersHouse);
        whiteHouse.addNeighbor("north west", anasHouse);

        System.out.println(whiteHouse);       
        whiteHouse.printAllNeighbors();

        System.out.println("****************************** \n" + jerrysHouse);
        jerrysHouse.printAllNeighbors();

        System.out.println("****************************** \n" + guentersHouse);
        guentersHouse.printAllNeighbors();

        System.out.println("****************************** \n" + anasHouse);
        anasHouse.printAllNeighbors();
    }  
}

最佳答案

问题在于您的 addNeighbor 方法,每次调用它时都会创建一个新的 HashMap 对象,而不是向 map 添加元素。

尝试使用 HashMap put 方法。像这样的东西:

myNeighbors.put(direction,h);

关于java - HashMap问题,打印邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331979/

相关文章:

java - 从 Spring Controller 刷新 jsp 页面

java - 获取 HashMap 中的前 10 个值

java - 找到Hashmap中的几个最大值

java - 如何将值放入/从 Nested HashMap 中获取值

java - 从嵌套 HashMap 中收集

java - JSTL1.2 根据TLD 或标签文件中的属性指令,属性var 不接受任何表达式

java - 是否有可能在 Stream 中获取下一个元素?

hash - Clojure映射限制和一致性

Java 8 日期和时间时间字段

lucene - 在 JDK6 上使用 Solr 索引的文档可以在 JDK1.4 上仅使用 lucene api 检索吗?