黑马程序员技术交流社区
标题:
将存入到集合中的对象删除,疑问
[打印本页]
作者:
闫杏荣
时间:
2012-5-1 12:11
标题:
将存入到集合中的对象删除,疑问
小程序一枚:
import java.util.*;
class CollectionDemo
{
public static void main(String[] args)
{
ArrayList aa = new ArrayList();
aa.add("abc");
aa.add(12);
System.out.println(aa);
aa.remove(12);
System.out.println(aa);
}
}
编译时没有问题,运行时结果为:
ArrayList 是用来存储对象的集合。
疑问1、12是做为对象存入到集合的吗?常量可以做为对象吗?
疑问2、12可以像“abc”一样存入集合,为什么不能用remove(12)来删除对象 ?
疑问3、如何才能删除集合中的12呢?
作者:
李成
时间:
2012-5-1 12:25
保存12 会自动装箱成integer对象存入,
remove(int index) 移除此列表中指定位置上的元素。所以不能用remover(12)来删除12的对象因为12代表的是集合中的位置。
要删除需要remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。
import java.util.*;
class testJava {
public static void main(String[] args) {
ArrayList aa = new ArrayList();
aa.add("abc");
aa.add(12);
System.out.println(aa);
aa.remove(new Integer(12));
System.out.println(aa);
}
}
复制代码
作者:
徐慧书
时间:
2012-5-1 12:25
针对于疑问:
解答1: 由于你的ArrayList并没有制定泛型,所以该aa中可以存入任意类型的对象,对于12 是被转化为Integer的实例后在存入aa中的,并不是常量
解答2:既然12是Integer类的实例自然可以存入,对已remove(int index)是通过下标索引来删除的,add(12)是将12 存入第二个位置,java从0开始,所以
12 其对应的index便为 1 ,所以需要通过aa.remove(1)来删除
解答3:见解答2
个人建议:对于ArrayList 的使用建议为其指定泛型,这样也更加安全,使用效率也更高!
有疑问,继续交流噢
作者:
suiabing
时间:
2012-5-1 13:09
E
remove
(int index)
移除此列表中指定位置上的元素
boolean
remove
(
Object
o)
移除此列表中首次出现的指定元素(如果存在)。
上面两个是api文档中的 也就是说你要remove一个元素,要么用
角标index
的形式,要么用 移除obj的形式,你这个remove(12)其实是移除了元素中第十二个
角标位置的元素
,如果非要移除的话可以移除第1个元素,也可以把12
封装
起来,
拆箱装箱
嘛,就是这个理,集合里面存的不是int的12,而是Integer的12,是一个对象。
arraylist.png
(12.46 KB, 下载次数: 62)
下载附件
2012-5-1 13:08 上传
作者:
攻城狮
时间:
2012-5-1 13:18
保存12 会自动装箱成integer对象存入,
而你用的ArrayList所以可以有两种删除方式···
意思通过remove接受Objet来删除 remove(new Integer(12));
第二种是通过角标删除 集合里面可以操作狡辩的都是ArrayList的特有方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2