【问题标题】:Collection Iterator isn't returning every value集合迭代器没有返回每个值
【发布时间】:2012-02-20 01:40:20
【问题描述】:

我正在尝试从Collection 返回序列并将其应用于TextView。当我设置文本时,只设置了一个值,即序列的最后一个值。当我打印序列时,为了检查它是否正常工作,一切都正确打印。据我所知,我这样做是正确的,即当迭代器hasNext() 时,获取next(),在这种情况下,是轨道的名称。我尝试了其他一些方法来正确设置 Collection,但是在研究了如何使用 Iterator 和 Collection 之后,我总是以这种方法结束。我错过了什么?

public static String getTopTracks(String mArtistName) {
    String returnTopTracks = "";
    Collection<Track> top = Artist.getTopTracks(mArtistName, key);
    Iterator<Track> itr = top.iterator();
    while (itr.hasNext()) {
        returnTopTracks = itr.next().getName();
        System.out.println(returnTopTracks);
    }
    return returnTopTracks;
}

【问题讨论】:

    标签: java android collections iterator


    【解决方案1】:

    您可能希望将热门曲目作为收藏返回

    public static Collection<String> getTopTracks(String mArtistName) {
        String returnTopTrack = "";
        Collection<Track> top = Artist.getTopTracks(mArtistName, key);
        Collection<String> returnTopTracks = new ArrayList<String>();
        Iterator<Track> itr = top.iterator();
        while (itr.hasNext()) {          
            returnTopTrack = itr.next().getName();
            returnTopTracks.add(returnTopTrack);
            System.out.println(returnTopTrack);
        }
        return returnTopTracks;
    

    }

    【讨论】:

      【解决方案2】:

      您发布的关于Iterator 或其用法的代码没有任何问题;它将调用集合的 getName() 方法中的每个对象。但是,您只返回最后一个这一事实可能是个问题。

      根据您的描述,您似乎希望返回每个TrackgetName() 方法返回的所有字符串。您需要返回一个List,您已经将它们全部放入,或者可能只是将String 连接到循环中。

      【讨论】:

        猜你喜欢
        • 2012-06-16
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 2013-10-23
        • 1970-01-01
        • 2018-02-09
        • 2017-05-02
        相关资源
        最近更新 更多