黑马程序员技术交流社区

标题: 集合问题。 [打印本页]

作者: NO?    时间: 2014-3-31 18:50
标题: 集合问题。
  1. import java.util.Iterator;
  2. import java.util.LinkedList;


  3. public class Testw {
  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6. LinkedList<String> lt =new LinkedList<String>();
  7.     show(lt);
  8.     show2(lt);
  9.         }
  10.         public static void show(LinkedList<String> lt ){
  11.                
  12.                       lt.addFirst("feehg");
  13.                       lt.addFirst("fhrjwhg");
  14.                      lt.addFirst("fhjrjrrewhg");
  15.                       lt.addFirst("fhtjhg");
  16.                       Iterator<String> it=lt.iterator();
  17.                       while (it.hasNext()) {
  18.                               System.out.println(it.next());
  19.                                
  20.                         }
  21.         }
  22.         public static void show2(LinkedList<String> lt ){
  23.                
  24.               lt.addLast("feehg");
  25.               lt.addLast("fhrjwhg");
  26.               lt.addLast("fhjrjrrewhg");
  27.               lt.addLast("fhtjhg");
  28.               Iterator<String> it=lt.iterator();
  29.               while (it.hasNext()) {
  30.                         System.out.println(it.next());
  31.                        
  32.                 }

  33. }
  34. }
复制代码

输出结果。为什么是十二个元素啊。我明明只存了八个?
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