2014-02-02 3 views
2

сначала это задание, поэтому я больше ищу помощь, затем закодированные ответы (не хочу обманывать!). Мое задание - создать программу, которая обрабатывает железнодорожную/железнодорожную сеть станций. Раздел, в котором я застрял, добавляет станции, их соединения и возвращает эти соединения в виде массива строк. Я включил ниже код, который у меня есть, а также извлечение из задания (связанное с разделом, в котором я сейчас). Я пробовал этот бит на всех выходных, поэтому любая помощь была бы чрезвычайно оценена.HashMap как ArrayList of Strings

Это только реализация интерфейса, который мне нужно изменить, класс «MyNetwork». Я просто чувствую, что я собираюсь в кругах, и, возможно, даже не смог подняться на правую ногу?

От присвоения;

Создать класс MyNetwork, который реализует сетевой интерфейс.

Метод getConnections этого класса должен возвращать массив, содержащий только те станции, которые напрямую связаны с аргументом fromStation. Подсказка 1: вы можете сделать это с помощью HashMap, причем клавишами являются строки (представляющие станции), а значения - ArrayLists of Strings (представляющие станции, к которым есть прямое соединение).

Подсказка 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! 
    } 
} 
+0

Просто для ясности, «станции» будут считаны в программу, используя входной поток, но это следующий шаг этого задания. Еще раз спасибо! – JavaStarta

ответ

0

Ваша сеть должна иметь состояние, используя один или несколько поле (я) экземпляра.

Как есть, у него нет штатов. Каждый метод создает локальную переменную типа 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

+0

Спасибо JB! Я думаю, что у меня есть то, что вы предлагаете, и это, безусловно, имеет смысл, чем я начал. Итак, для метода «addConnections» я должен ссылаться на карту «станции», а затем делать что-то вроде «put..From/to»? – JavaStarta

+0

Не совсем. Вам нужно будет получить существующий список станций, уже подключенных к станции, и добавить данную подключенную станцию ​​в список. Я исправил свой ответ. Карта должна быть «Map >», связывая список подключенных станций к станции. –

Смежные вопросы