gpt4 book ai didi

java - HashMap 作为字符串的 ArrayList

转载 作者:行者123 更新时间:2023-11-29 08:53:35 26 4
gpt4 key购买 nike

首先,这是一项作业,所以我更多地是在寻求帮助,而不是编码答案(不想作弊!)。我的任务是创建一个程序来处理火车/铁路车站网络。我坚持的部分添加了站点、它们的连接,并将这些连接作为字符串数组列表返回。我在下面包含了到目前为止的代码,以及作业的摘录(与我现在所在的部分相关)。我整个周末都在为这个问题苦苦挣扎,所以任何帮助都会非常感激。

这只是我需要编辑的接口(interface)的实现,“MyNetwork”类。我只是觉得我一直在兜圈子,可能连右脚都没走好?

来自作业;

创建一个实现网络接口(interface)的类 MyNetwork。

此类的 getConnections 方法应返回一个数组,其中仅包含直接连接到 fromStation 参数的那些站。提示 1:您可以使用 HashMap 来执行此操作,键是字符串(代表站点),值是字符串的 ArrayList(代表有直接连接的站点)。

提示 2:虽然 getConnections 方法返回的是一个字符串数组,但是 HashMap 中的值最好是字符串的 ArrayLists

界面;

public interface Network {

/**
* Add a station to the network.
* @param station The station to be added.
*/
public void addStation(String station);

/**
* Add a direct connection from one station to another.
* @pre both fromStation and toStation have already been added by the method
* addStation.
* @param fromStation The station from which the connection begins.
* @param toStation The station at which the connection ends.
*/
public void addConnection(String fromStation, String toStation);

/**
* Get a list of all stations directly connected to a given station.
* @pre fromStation has been added to the network by the method addStation.
* @param fromStation
* @return A list of all the stations to which there is a direct connection
* from fromStation.
*/
public String[] getConnections(String fromStation);

/**
* Search for a station in the network.
* @param station Station to be searched for,
* @return true if the Station exists in the network, false otherwise.
*/
public boolean hasStation(String station);

/**
* Get all stations in the network.
* @return An array containing all the stations in the network, with no
* duplicates.
*/
public String[] getStations();

实现:

public class MyNetwork implements Network {

@Override
public void addStation(String station) {

ArrayList<String> Stations = new ArrayList<>();
Stations.add(station);
}

@Override
public void addConnection(String fromStation, String toStation) {

Map<String,String> Connections = new HashMap<>();
Connections.put(fromStation, toStation);
}

@Override
public String[] getConnections(String fromStation) {
return null; // dummy value!

}

@Override
public boolean hasStation(String station) {
return false; // dummy value!
}

@Override
public String[] getStations() {
return null; // dummy value!
}
}

最佳答案

您的网络需要有一个状态,使用一个或多个实例字段。

照原样,它没有任何状态。每个方法创建一个 List 或 Map 类型的局部变量,向此 List 或 Map 添加一些内容,然后返回。所以 List 或 Map 直接超出范围并被垃圾收集。

private Map<String, List<String>> stations = new HashMap<>();

// now all your methods should use the above map.

参见 http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html

关于java - HashMap 作为字符串的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21511954/

26 4 0