该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-28
E remove(int index)
移除列表中指定位置的元素(可选操作)。 boolean remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。 这种情况真的是编程中的陷阱。。 |
|
返回顶楼 | |
发表时间:2011-02-28
最后修改:2011-02-28
一个是在集合中删除指定的对象(传具体的对象);一个是在集合中删除指定位置的元素(传下标)。
呵呵,如果在智能编程工具中,如eclipse中,最好的办法,其实看传的参数结构就知道不同了。根本不用查api |
|
返回顶楼 | |
发表时间:2011-02-28
原来Collection类中只有remove(E e),而List中除了有继承来的remove(E e);还有自己重载实现的remove(int index);方法
所以上面方法调用的con.remove(0);编译器把它当成从con中删除一个Intege类实例(new Integer(0)) 谢谢LZ分享,自己都把这个区别给忘了 |
|
返回顶楼 | |
发表时间:2011-02-28
yangfuchao418 写道 一个是在集合中删除指定的对象(传具体的对象);一个是在集合中删除指定位置的元素(传下标)。
呵呵,如果在智能编程工具中,如eclipse中,最好的办法,其实看传的参数结构就知道不同了。根本不用查api 问题是jdk1.5以后有了装箱机制,传入基本数据类型,也当做Object处理了。 |
|
返回顶楼 | |
发表时间:2011-02-28
zhangyou1010 写道 webee 写道 你呀肯定不看接口编程的,这是两个不同的重载方法!
Collection<String> con = new ArrayList<String>(); con.add("a"); con.add("b"); con.add("c"); con.remove(0); System.out.println(con.size()); List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.remove(Integer.valueOf(0)); System.out.println(list.size()); 这里没涉及到重载。是接口里的方法规定不一样而已。 呵呵,不叫重载,叫什么,一样的方法名,只是参数不一样,一个是Object,一个是int |
|
返回顶楼 | |
发表时间:2011-02-28
最后修改:2011-02-28
public interface Collection<E> extends Iterable<E> { boolean add(E e); boolean remove(Object o); boolean contains(Object o); //... } JDK1.6中源代码。个人感觉似乎这个接口设计不是很合适,为什么不是: boolean remove(E o); boolean contains(E o); 如果那个接口是泛型的话,lz的问题编译时候就发现了~~~ |
|
返回顶楼 | |
发表时间:2011-02-28
最后修改:2011-02-28
发这个贴只能说明你水平有多低,
老夫来教教你 Collection有一个remove(Object o)方法,他删除一个用相等的对象 Collection集合里边是没有顺序的,所以没有办法跟进索引删除 Collection<String> con = new ArrayList<String>(); con.add("a"); con.add("b"); con.add("c"); con.remove(0); System.out.println(con.size()); 这段代码是删除一个对象0,但是集合中根本就没有0这个对象,所以就不删除。如果你要删除a必须这样写con.remove("a"); List接口有两个remove方法 remove(Object o) remove(int index) 下面代码中是使用了第二个重载的方法 List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.remove(0); System.out.println(list.size()); 这段代码要删除a也可以这样写 list.remove('a'); |
|
返回顶楼 | |
发表时间:2011-02-28
clayton0 写道 zhangyou1010 写道 webee 写道 你呀肯定不看接口编程的,这是两个不同的重载方法!
Collection<String> con = new ArrayList<String>(); con.add("a"); con.add("b"); con.add("c"); con.remove(0); System.out.println(con.size()); List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.remove(Integer.valueOf(0)); System.out.println(list.size()); 这里没涉及到重载。是接口里的方法规定不一样而已。 呵呵,不叫重载,叫什么,一样的方法名,只是参数不一样,一个是Object,一个是int 谢谢指出,确实是重载,是我弄错了。 |
|
返回顶楼 | |
发表时间:2011-03-02
哪里命名不规范了吗,跟功能不沾边
|
|
返回顶楼 | |
发表时间:2011-03-04
Collection<String> con = new ArrayList<String>();
con.add("a"); con.add("b"); con.add("c"); con.remove(0); System.out.println(con.size()); Collection 的 remove的方法不是只能移除一个对象~ 咋可以con.remove(0);这样 |
|
返回顶楼 | |