超简单的代码~~~import java.util.*;
import static net.mindview.util.Print.*;public class SortedSetDemo {
  public static void main(String[] args) {
    SortedSet<String> sortedSet = new TreeSet<String>();
    Collections.addAll(sortedSet,
      "one two three four five six seven eight"
        .split(" "));
    print(sortedSet);
    String low = sortedSet.first();
    String high = sortedSet.last();
    print(low);
    print(high);
    Iterator<String> it = sortedSet.iterator();
    for(int i = 0; i <= 6; i++) {
      if(i == 3) low = it.next();  //这里的 i 为什么会影响到 Iterator方法呢?
      if(i == 6) high = it.next();
      else it.next();
    }
    print(low);
    print(high);
    print(sortedSet.subSet(low, high));
    print(sortedSet.headSet(high));
    print(sortedSet.tailSet(low));
  }
}

解决方案 »

  1.   

    i 的值在等于3的时候,你可以让他做任何事情.当然也可以让他low = it.next(); 但你这样写IF的话起不到任何的作用.完全和没写一样.
      

  2.   

    当i=3时,if(i == 3) low = it.next();  执行了一次it.next();
    if(i == 6) high = it.next();
          else it.next();
    的else语句也执行了一次it.next();
      

  3.   

    这个for循环只是单纯的想获得i==3和6时的值
      

  4.   


    if(i == 3) low = it.next();  //这里的 i 为什么会影响到 Iterator方法呢?
    if(i == 6) high = it.next();
    只要执行了it.next();它的记录就向下移动了一下.
    你这样写感觉很别扭
      

  5.   

    Iterator
    it.next();
    每写一个都会执行一次,
      

  6.   

     if(i == 3) {low = it.next(); }     else  if(i == 6) {high = it.next();}
          else {it.next();}
      

  7.   

    你这样写的话,每一层循环中it.next()都执行两次,想当于iterator向后移两个元素
    是不是少写了个else:if(i == 3) low = it.next();
    else if(i == 6) high = it.next();
    else it.next();
      

  8.   

    我明白意思了,这是Thinking In Java上的一段代码,这里作者确实写得不是很规范,不过绝对没错!!刚才漏看了一句代码就是 else it.next(); 所以想不通,谢谢各位了。