首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java调试ArrayList等于方法

Java调试ArrayList等于方法
EN

Stack Overflow用户
提问于 2014-11-19 18:56:28
回答 2查看 973关注 0票数 0

在下面的代码中,有没有什么方法可以调试hashcode和equals方法的实现code.If是的,我需要把断点放在那里。

PS:我已经附上了java源代码(src.zip)

代码语言:javascript
复制
public static void main(String[] args) 
{
    List<String>list=new ArrayList<String>();
    list.add("ff");
    list.add("gg");

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

    List<String>list1=new ArrayList<String>();
    list1.add("ff");
    list1.add("gg");

    System.out.println(list1.hashCode());

    System.out.println(list.equals(list1));
    System.out.println(list.hashCode()==list1.hashCode());

}

谢谢,Vivek

EN

回答 2

Stack Overflow用户

发布于 2014-11-19 19:00:29

arrayList的默认equal和hashCode方法驻留在java.util.AbstractList下。如果你想调试你的代码,你可以在那个类中围绕这两个方法设置断点。

在内部,它会在列表中的每个字符串上调用equals。同样的情况也适用于hashCode,即它在列表中的每个字符串上调用hashCode。

简而言之,你的代码应该可以工作,你应该为两个列表找到相同的哈希码,它们也应该是相等的。

票数 0
EN

Stack Overflow用户

发布于 2014-11-19 19:05:04

ArrayList扩展了AbstractList,并且在AbstractList类的hashCode方法上有一个断点应该可以工作。

您可以很好地了解hashCode是如何计算的。

这是AbstractList类中hashCode()的实现。

代码语言:javascript
复制
public int hashCode() {
    int hashCode = 1;
    for (E e : this)
        hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
    return hashCode;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27015096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档