首页 > 其他 > 详细

ArrayList中contains,remove方法返回为false的原因

时间:2015-01-08 09:31:14      阅读:334      评论:0      收藏:0      [点我收藏+]

这几天做一个项目时,遇到ArrayList.remove(Object)方法失败,而ArrayList"包含"删除的对象,这其中的"包含"不是完全包含,请看下面的例子:

package org.mytest;

import java.util.ArrayList;

/**对ArrayList.remove或者contains的笔记
 * contains,remove时会执行equals()
 * 例子1,删除为false
 * 例子2,删除为true
 * @author ywf
 *
 */
public class test {
public static void main(String[] args) {
    System.out.println("例子1:ArrayList删除Node对象:");
    ArrayList<Node> list = new ArrayList<Node>();
    Node node1 = new Node(1);
    Node node2 = new Node(2);
    list.add(node1);
    list.add(node2);
    System.out.println(list.remove(new Node(1)));
    System.out.println("例子2:ArrayList删除Integer对象:");
    ArrayList<Integer> list1 = new ArrayList<Integer>();
    Integer node11 = new Integer(1);
    Integer node21 = new Integer(2);
    list1.add(node11);
    list1.add(node21);
    System.out.println(list1.remove(new Integer(1)));
}
}
class Node{
    int id;
    public Node(int id){
        this.id = id;
    }
    public boolean equals(Node node){
        return this.id==node.id;
    }
}

有经验的可以一下子得出第一个是false,第二个是true,对我这个菜鸟来说以为两个都是true,我以为覆写了equals()就能实现都为true的效果,结果是错误的。

ArrayList中contains,remove方法返回为false的原因

原文:http://www.cnblogs.com/yuwenfeng/p/4209959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!