Collection Iterator没有返回每个值

时间:2012-02-20 01:40:20

标签: java android collections iterator

我正在尝试从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;
}

2 个答案:

答案 0 :(得分:2)

您可能希望将您的热门曲目作为集合

返回
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;

}

答案 1 :(得分:0)

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

根据您的说明,您似乎希望返回每个Track的{​​{1}}方法所覆盖的所有字符串。您需要返回一个getName(),并将其全部放入,或者只是在循环中连接List