通过TreeSet调用iterator.next()[Thinking in Java] [英] Calling iterator.next() through a TreeSet [example from Thinking In Java]

查看:64
本文介绍了通过TreeSet调用iterator.next()[Thinking in Java]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Java中的Thinking in Depth中的读取容器。看到这个例子(从SortedMapDemo.java修改):



 TreeSet< String> sortedSet =  new  TreeSet< String>(); 
Collections.addAll(sortedSet,
abcdefgh
。 split( ));



...

 Iterator< String> it = sortedSet.iterator(); 
for int i = 0 ; i< = 6 ; i ++){
if (i == < span class =code-digit> 3 )low = it.next();
if (i == 6 )high = it.next();
else it.next();
}
打印(低);
打印(高);





令我感到困惑的是,虽然'low'打印出d,high打印出h,我认为应该是g。

如果我们在每次迭代中调用it.next(),第7次迭代不应该给出g??

解决方案

解决。对不起伙计。

这是因为



if;

if;

否则;



结构,当i == 3时,.next()被调用两次


Reading Containers in Depth chapter from the Thinking In Java book. Saw this example(modified from SortedMapDemo.java):

TreeSet<String> sortedSet = new TreeSet<String>();
Collections.addAll(sortedSet,
          "a b c d e f g h"
            .split(" "));


...

Iterator<String> it = sortedSet.iterator();
for(int i = 0; i <= 6; i++) {
if(i == 3) low = it.next();
if(i == 6) high = it.next();
else it.next();
}
print(low);
print(high);



What baffles me is that while 'low' prints out "d", 'high' prints out "h", for which I think should be "g" instead.
If we're calling it.next() in each iteration, shouldn't the 7th iteration gives "g"??

解决方案

Solved. Sorry guys.
It's because the

if;
if ;
else;

structure, when i ==3, .next() gets called twice


这篇关于通过TreeSet调用iterator.next()[Thinking in Java]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆