如何检查是否处理迭代器中的最后一项?

Bas*_*sit 28 java iterator

如果我有一个迭代器并且我想检查最后一个值,我该如何检查它?喜欢

private Set<String> saarcCountries = new TreeSet<String>();
Iterator iter = saarcCountries.iterator();

while(iter.hasNext()) {

    String name = (String)iter.next();
    int countryId = Integer.parseInt(name);

    newsOrAnnouncementInsert.add(newsId);
    newsOrAnnouncementInsert.add(countryId);
    newsOrAnnouncementInsert.add(1);            //addby

    if (!(last value in iterator))) {
        newsOrAnnouncementInsert.add("~!~");//Delimiter for Multiple Detail Records
    }//end if

} //end of while
Run Code Online (Sandbox Code Playgroud)

我该如何检查最后一个值.什么应该替换迭代器中的最后一个值

Der*_*ike 33

您可以像在while条件中一样检查它:

if ( ! iter.hasNext()) {
    // last iteration
    ...
}
Run Code Online (Sandbox Code Playgroud)


小智 31

如果之后iter.hasNext()是假, iter.next()则它是最后一项.

快乐的编码.


lil*_*nux 12

此答案并非特定于迭代器,但可用于需要在项之间插入分隔符的任何迭代语句.它不需要知道当前索引也不需要任何条件.

String previousSeparator = "";
for (String value : collection) {
  System.err.println(previousSeparator + value);
  previousSeparator = ",";
}
Run Code Online (Sandbox Code Playgroud)