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()函数内发生的事情