java 调用ArrayList中对象的方法

bogh5gae  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(183)

我在一个作业中被这个问题卡住了,作业中我必须“列出给定地铁线沿着的车站”。有两个哈希图:

private Map<String, Station> allStations = new HashMap<String, Station>(); // all stations, indexed by station name
private Map<String, SubwayLine> allSubwayLines = new HashMap<String, SubwayLine>(); // all subway lines, indexed by name of the line

我正在尝试调用“getStations()”方法,它是subwayLine类的一部分:

public List<Station> getStations(){
    return Collections.unmodifiableList(stations); 
}

在链接到按钮的地铁线路对象上:

public void listStationsOnLine(){
    UI.clearText();
    List<SubwayLine> subwayLines = new ArrayList(allSubwayLines.values());
    for(SubwayLine s  : subwayLines){
        s.getStations();
    }
}

然而,这什么也不做。有没有无论如何我可以返回沿着给定地铁线的车站?

vnzz0bqm

vnzz0bqm1#

你必须再次将你的数据保存到数组列表中:

public void listStationsOnLine(){
    UI.clearText();
    List<SubwayLine> subwayLines = new ArrayList(allSubwayLines.values());
    List<Collection<Station>> stations = new ArrayList();
    for(SubwayLine s  : subwayLines){
     
        stations.add(s.getStations());

    }
}
omtl5h9j

omtl5h9j2#

方法中的void关键字意味着它不返回任何内容。您可能希望将其替换为List,并在方法的末尾返回它,例如

public List<Station> listStationsOnLine(){
    UI.clearText();
    List<SubwayLine> subwayLines = new ArrayList(allSubwayLines.values());
    List<Collection<Station>> stations = new ArrayList<>();
    for(SubwayLine s  : subwayLines){
        stations.add(s.getStations());
    }
    return stations
}

请注意,您将遍历所有地铁线路,因此您的站点数组列表包含了沿着 * 某 * 条地铁线路的所有站点。因此,不是每条地铁线路的站点列表。此外,我还向数组列表调用添加了一个菱形操作符。这将自动生成一个Collection<Station>类型的数组列表。然而,制作收藏列表似乎不适合这里?您可能只想要<Station>的列表。
此外,调用s.getStations()似乎产生了地铁线s上的所有车站。你的问题的描述似乎是问如何实现这个方法。在你的问题中,你似乎更喜欢给定地铁线的车站列表。然后,这应该是你的方法的输入,如下所示:

public List<Station> listStationsOnLine(SubwayLine subwayline){
    UI.clearText();
    List<Station> allStations = getStations();
    List<Station> stations = new ArrayList<>();
    for(Station s : allStations){
        if(s.onLine(subwayline)) {
            stations.add(s);
        }
    }
    return stations
}

相关问题