Итератор коллекции не возвращает каждое значение - PullRequest
1 голос
/ 20 февраля 2012

Я пытаюсь вернуть последовательность из Collection и применить ее к TextView.Когда я устанавливаю текст, устанавливается только одно значение - последнее из последовательности.Когда я печатаю последовательность, чтобы убедиться, что она работает, все печатается правильно.Насколько я могу судить, я делаю это правильно, говоря итератору hasNext(), получая next() и, в данном случае, название трека.Я попробовал несколько других способов правильно настроить коллекцию, но после более подробного изучения использования итератора и коллекции я всегда возвращаюсь к этому методу.Что мне не хватает?

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 ]

2 голосов
/ 20 февраля 2012

Вы, вероятно, хотите вернуть свои лучшие треки в виде коллекции

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;

}

0 голосов
/ 20 февраля 2012

Нет ничего плохого в том, что вы разместили код в отношении Iterator или его использования; он будет вызывать каждый объект в методе getName () коллекции. Однако тот факт, что вы возвращаете только последний, может быть проблемой.

Из вашего описания видно, что вы хотите вернуть все строки, восстановленные каждым методом Track getName(). Вам нужно будет вернуть List, в который вы поместили их все, или, возможно, просто объединить этот String в цикле.

...