A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭娇珍 中级黑马   /  2013-1-3 20:15  /  1404 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class Demo
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList<String> list =new ArrayList<String>();
  7. list.add("java");
  8. list.add("java");
  9. list.add("java");
  10. list.add("java1");
  11. list.add("java1");
  12. list.add("java3");
  13. list.removeAll("java");


  14. Iterator <String> it=list.iterator();
  15. while(it.hasNext())
  16. {
  17. String s=it.next();

  18. System.out.println(s);
  19. }

  20. }
  21. }
复制代码
各位大侠帮忙看下哪里错了,为什么

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

5 个回复

正序浏览
13.list.removeAll("java");

你的错误就在这句代码,removeAll()中的参数应该是集合名而不是对象名。
回复 使用道具 举报
removeAll方法要传入一个集合
import java.util.*;
class Demo
{
public static void main(String[] args)
{
ArrayList<String> list =new ArrayList<String>();
list.add("java");
list.add("java");
list.add("java");
list.add("java1");
list.add("java1");
list.add("java3");

System.out.println(list.removeAll(list));


Iterator <String> it=list.iterator();
while(it.hasNext())
{
String s=it.next();

System.out.println(s);
}

}
}
回复 使用道具 举报
你好
removeAll删除与指定集合中相同的元素public boolean removeAll(Collection<?> c)
所以参数应该是一个集合,如果你要删除所有的java字符串。
  1. import java.util.*;
  2. class ReflectTest
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList<String> list =new ArrayList<String>();
  7. List<String> alist=new ArrayList<String>();
  8. alist.add("java");

  9. list.add("java");
  10. list.add("java");
  11. list.add("java");
  12. list.add("java1");
  13. list.add("java1");
  14. list.add("java3");
  15. list.removeAll(alist);


  16. Iterator <String> it=list.iterator();
  17. while(it.hasNext())
  18. {
  19. String s=it.next();

  20. System.out.println(s);
  21. }

  22. }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 刘文超 于 2013-1-3 20:48 编辑

楼上正解, removeAll(Collection<?> col)方法用来从该集合中移除同时包含在指定集合col中的对象,
与retainAll()方法正好相反。
返回值为boolean型,如果存在符合移除条件的对象则返回true,否则返回false。

给你一个小例子便于理解:
  1. public class test {
  2.   
  3.      /**
  4.       * @param args
  5.       */
  6.      public static void main(String[] args) {
  7.          // TODO Auto-generated method stub
  8.        List lista = new ArrayList();
  9.        List listb = new ArrayList();
  10.        lista.add("1");
  11.        lista.add("2");
  12.        lista.add("3");
  13.        lista.add("4");
  14.        lista.add("5");
  15.        lista.add("6");
  16.        lista.add("7");
  17.        lista.add("9");
  18.        lista.add("8");
  19.        lista.add("0");
  20.        lista.add("a");
  21.        lista.add("b");
  22.        System.out.println(lista);
  23.        listb.add("1");
  24.        listb.add("b");
  25.        lista.removeAll(listb);
  26.        System.out.println(lista);
  27.      }
  28. }
  29. //这样的输出结果是:
  30. //[1, 2, 3, 4, 5, 6, 7, 9, 8, 0, a, b]
  31. //[2, 3, 4, 5, 6, 7, 9, 8, 0, a]
复制代码

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
为什么不看错误提示呢?你第13行的removedAll方法用错了,参数不对,参数应该是集合。
用方法前,多查查API吧

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马