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