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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈虹旭 中级黑马   /  2012-10-18 16:02  /  3930 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class AddAllDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList a = new ArrayList();
  7. ArrayList b = new ArrayList();
  8. a.add("java01");
  9. a.add("java02");
  10. a.add("java03");
  11. a.add("java04");

  12. b.add("java02");
  13. b.add("java03");
  14. b.add("java04");
  15. b.add("java05");

  16. //a.addAll(b);
  17. System.out.println(a.remove(b));//这里的结果为什么是false
  18. }
  19. }
复制代码
看完视频,本来想理解下addAll()和removeAll()的用法,本来是应该先a.addAll(b),再输出a的
我图省事就直接打印了,没想到结果出乎了我的意料:
输出a.addAll(b);返回结果是true
输出a.removeAll(b);返回结果是false

这个究竟是为什么?求大虾们指点!

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

10 个回复

倒序浏览
本帖最后由 廖智 于 2012-10-18 16:22 编辑

你写的删除格式有错误了
回复 使用道具 举报
本帖最后由 廖智 于 2012-10-18 16:42 编辑

import java.util.*;
class AddAllDemo
{
public static void main(String[] args)
{
ArrayList a = new ArrayList();
ArrayList b = new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");

b.add("java02");
b.add("java03");
b.add("java04");
b.add("java05");

//a.addAll(b);
System.out.println(a.remove(b));//这里你写的格式错误了,应该写a.removeAll(b)表示删除a容器中和b相同的所有元素。删除成功就返回true否则返回false。

}
}

删除单个元素格式: a.remove("java01").

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
  1. class Test {
  2.     public static void main(String[] args) {
  3.         ArrayList a = new ArrayList();
  4.         ArrayList b = new ArrayList();
  5.         a.add("java01");
  6.         a.add("java02");
  7.         a.add("java03");
  8.         a.add("java04");

  9.         b.add("java02");
  10.         b.add("java03");
  11.         b.add("java04");
  12.         b.add("java05");

  13.         // a.addAll(b);
  14.         System.out.println(a.remove(b));// 这里的结果为什么是false?因为你写错了大哥。是removeAll,不是remove
  15.     }
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
ArrayList的remove方法用来删除集合中指定的元素,集合a中的元素师字符串。你却要删除一个集合b,难道集合a的元素里有集合b?
所以无法删除指定元素,删除失败返回false
简单来说,就是没有找到你要删除的元素。
回复 使用道具 举报
不管是用remove还是removeAll,返回值为false,就是说没有找到你要删除的元素
回复 使用道具 举报
王自强 发表于 2012-10-18 16:18

我就说这么个意思 写的是remove还是removeAll都无所谓,关键是为什么返回的不是元素而是boolean
回复 使用道具 举报
廖智 发表于 2012-10-18 16:15
import java.util.*;
class AddAllDemo
{

删除成功就返回true,否则返回false
很有帮助,不过你的格式也没有写对 呵呵 谢谢指点!
回复 使用道具 举报
import java.util.*;
class AddAllDemo
{
public static void main(String[] args)
{
ArrayList a = new ArrayList();
ArrayList b = new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
b.add("java02");
b.add("java03");
b.add("java04");
b.add("java05");
//a.addAll(b);
System.out.println(a.removeAll(b));//这里的结果就是true了
}
}
你刚开始的那个用的remove方法,这里的参数是你要删除的元素,删除成功了返回true,你这里没有b,没有删除元素,所以是false
用removeAll方法删除了a中包含的b中的元素,删除一个或一个以上的元素,返回true
回复 使用道具 举报
API上面写的返回值类型是 boolean

boolean removeAll(Collection<?> c)从列表中移除指定 collection 中包含的其所有元素(可选操作)。

看看API嘛
回复 使用道具 举报
廖智 中级黑马 2012-10-18 16:40:23
11#
陈虹旭 发表于 2012-10-18 16:36
删除成功就返回true,否则返回false
很有帮助,不过你的格式也没有写对 呵呵 谢谢指点! ...

a.removeAll(b)这个结果的返回值是有true和false。
返回true表示删除成功,返回false表示删除失败。
你直接用System.out.println(a.remove)直接输出,打印的当然是true或false。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马