黑马程序员技术交流社区
标题:
集合问题。
[打印本页]
作者:
NO?
时间:
2014-3-31 18:50
标题:
集合问题。
import java.util.Iterator;
import java.util.LinkedList;
public class Testw {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList<String> lt =new LinkedList<String>();
show(lt);
show2(lt);
}
public static void show(LinkedList<String> lt ){
lt.addFirst("feehg");
lt.addFirst("fhrjwhg");
lt.addFirst("fhjrjrrewhg");
lt.addFirst("fhtjhg");
Iterator<String> it=lt.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
public static void show2(LinkedList<String> lt ){
lt.addLast("feehg");
lt.addLast("fhrjwhg");
lt.addLast("fhjrjrrewhg");
lt.addLast("fhtjhg");
Iterator<String> it=lt.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
复制代码
输出结果。为什么是十二个元素啊。我明明只存了八个?
fhtjhg
fhjrjrrewhg
fhrjwhg
feehg
fhtjhg
fhjrjrrewhg
fhrjwhg
feehg
feehg
fhrjwhg
fhjrjrrewhg
fhtjhg
作者:
osully
时间:
2014-4-1 08:02
你迭代了两次
第一次迭代输出的时候,集合中只有4个元素
第二次迭代输出的时候,集合中有8个元素
所有一共打印出来了12个
作者:
zhangbingyuan
时间:
2014-4-1 09:19
本帖最后由 zhangbingyuan 于 2014-4-1 09:20 编辑
首先要知道的是LinkedList底层的数据结构是链表,也就是说LinkedList集合中的元素都是通过内存地址链接起来的。在show这个方法中,你在集合中添加了4个元素。可能你不理解的是show程序结束后,在show2方法里传进去的LinkedList是不是应该是空的呀,答案是不为空。因为,在show中,你把LinkedList作为参数传递进去,传递的实际上是LinkedList在内存中的地址,这样,当你做完add操作后,LinkedList的内容也发生了变化。当你在随后使用show2方法后,同理,又往LinkedList中添加了4个元素,此时LinkedList中的元素就编程8个了。所以第二次迭代完后,显示LinkedList中有8个元素,在加上show方法迭代打印出来的4个,一共是12个。 恩,就是这样了,希望可以帮到你。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2