小编Nam*_*915的帖子

为什么Iterators.size()使迭代器变空?

public static void main(String args[]) throws JSONException {
    JSONObject json = new JSONObject();
    json.put("name", "abcgdj");
    json.put("no", "1234");
    json.put("contact", "6748356");
    Iterator<?> keys = json.keys();
    System.err.println(Iterators.size(keys));
    System.err.println(Iterators.size(keys));
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,执行后Iterators.size(keys),迭代器变为空,对于第二个print语句,它返回0.

size()方法在包下com.google.common.collect.iterators.所以我看了Iterators.size()函数的代码.它是,

 public static int size(Iterator<?> iterator) {
    long count = 0L;
    while (iterator.hasNext()) {
    iterator.next();
    count++;
  }
  return Ints.saturatedCast(count);
}
Run Code Online (Sandbox Code Playgroud)

所以我怀疑迭代器是如何keys变空的.是否通过引用调用?

任何人都可以解释size()函数内发生的事情

java iterator guava

6
推荐指数
1
解决办法
298
查看次数

标签 统计

guava ×1

iterator ×1

java ×1