黑马程序员技术交流社区

标题: 关于retainAll()返回值的看法 [打印本页]

作者: 12300123    时间: 2015-4-12 11:28
标题: 关于retainAll()返回值的看法
  1. import java.util.*;
  2. class CollectionDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Collection c1=new ArrayList();
  7.                 c1.add("abc1");
  8.                 c1.add("abc2");
  9.                 c1.add("abc3");
  10.                 c1.add("abc4");



  11.                 Collection c2=new ArrayList();
  12.                 //c2.add("abc1");
  13.                 c2.add("abc2");
  14.                 c2.add("abc3");
  15.                 c2.add("abc4");
  16.                 c2.add("abc5");
  17.                 c2.add("abc6");
  18.                 c2.add("abc7");
  19.                 c2.add("abc8");

  20.                
  21.                 c1.retainAll(c2);
  22.                
  23.                 System.out.println(        c1);
  24.                 System.out.println(        c1.retainAll(c2));
  25.         }
  26. }
复制代码
如上所示,是我今天上午写的一段代码,用于测试retainAll()方法的返回值,编译结果显示,无论c1的元素有没有发生变化,返回值都是false,这不对啊。没有变化返回值是false,变化了的话返回值应该是true才对。我用的jre1.7,不会是bug吧。谁来测试看看有没有同样的问题,真奇怪!


作者: xlunaer    时间: 2015-4-12 11:39
  1. public static void main(String[] args) {

  2.                 Collection<String> c1 = new ArrayList<String>();
  3.                 c1.add("abc1");
  4.                 c1.add("abc2");
  5.                 c1.add("abc3");
  6.                 c1.add("abc4");

  7.                 Collection<String> c2 = new ArrayList<String>();
  8.                 // c2.add("abc1");
  9.                 c2.add("abc2");
  10.                 c2.add("abc3");
  11.                 c2.add("abc4");
  12.                 c2.add("abc5");
  13.                 c2.add("abc6");
  14.                 c2.add("abc7");
  15.                 c2.add("abc8");

  16.                 c1.retainAll(c2); // 这里已经踢出了c2与c1相同的元素,所以下一次c1就不会变化了,
  17.                                                         // 你把这行代码注释看看结果是不是true

  18.                 System.out.println(c1);
  19.                 System.out.println(c1.retainAll(c2));
  20.         }
复制代码

作者: 12300123    时间: 2015-4-12 19:30
xlunaer 发表于 2015-4-12 11:39

:(,是的,测试过代码后那行忘记删掉了,:L




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2