java – hashCode和equals为Collections.unmodifiableCollection
Collections类有一些静态帮助方法来提供各种集合类型的只读视图,如unmodifiableSet(),unmodifiableList()等.对于这些视图对象,hashCode()和equals()方法将调用转发到底层集合…有一个奇怪的例外:unmodifiableCollection().
JavaDoc explicitly states:
我的问题:如果后台集合是一个集合或列表,我希望行为与unmodifiableSet()和unmodifiableList()一致.如何违反hashCode /等于合同? 解决方法
从JavaDoc for Collection:
一个UnmodifiableList是一个UnmodifiableCollection,但相反的是不相反的 – 一个UnmodifiableCollection包装一个List不是一个UnmodifiableList.因此,如果将一个包含List a的UnmodifiableCollection与包含同一个List a的UnmodifiableList进行比较,则两个包装器不应相等.如果你刚刚通过包装清单,他们将是平等的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |