Collection (Java 2 Platform SE 5.0)<!---->
<script type="text/javascript">
function windowTitle()
{
parent.document.title="Collection (Java 2 Platform SE 5.0)";
}
</script>
<noscript></noscript>
<script src="/jdk150/H2HHinclude.js"></script>
equals
boolean equals
(Object
o)
Compares the specified object with this collection for equality.
While the Collection
interface adds no stipulations to the general
contract for the Object.equals
, programmers who implement the
Collection
interface "directly" (in other words, create a class that is
a Collection
but is not a Set
or a List
) must
exercise care if they choose to override the Object.equals
. It is not
necessary to do so, and the simplest course of action is to rely on
Object
's implementation, but the implementer may wish to implement a
"value comparison" in place of the default "reference comparison." (The
List
and Set
interfaces mandate such value comparisons.)
The general contract for the Object.equals
method states that equals
must be symmetric (in other words, a.equals(b)
if and only if
b.equals(a)
). The contracts for List.equals
and
Set.equals
state that lists are only equal to other lists, and sets to
other sets
. Thus, a custom equals
method for a collection class that
implements neither the List
nor Set
interface must return
false
when this collection is compared to any list or set. (By the same
logic, it is not possible to write a class that correctly implements both the
Set
and List
interfaces.)
用equals()进行两个对象的比较时,对象的类型必须一致.如List.euqals()返回true当且仅当比较的两个对象同为List.这也解释了Thinking in java(第四版中文版)中223页的这几行代码:
Pet cymric = new Cymric();
System.out.println("5: " + pets.indexOf(cymric));
System.out.println("6: " + pets.remove(cymric));
由于indexOf(),cotains(),remove()方法都需要用到equals(),尽管List<Pet>pets已经包含了crymric,但用新建的Crymric对象crymric作为indexOf()和remove()的参数都不会得到我们希望的结果,因为crymric不是List对象.
分享到:
相关推荐
#### 四、注意事项 1. **`equals`方法和`hashCode`方法应保持一致性**:如果两个对象根据`equals`方法是相等的,那么它们的`hashCode`也应该是相等的。这是因为某些集合框架(如`HashMap`)会使用`hashCode`来定位...
注意事项 自定义`equals`方法时,应考虑对象属性的顺序以及处理循环引用的情况,以免陷入无限递归。此外,如果对象包含`undefined`值,可能需要特殊处理,因为`undefined`在JavaScript中与其他类型的值比较时会有...
注意事项** - 当重写 `equals()` 时,总是应该同时重写 `hashCode()`。 - 避免在 `equals()` 方法中使用 `==` 来比较对象,除非你想比较的是引用。 - 在 `hashCode()` 方法中,应使用对象的非空关键属性来计算哈希...
equals()方法的注意事项 在使用equals()方法时,我们需要注意以下几点: 1. 除了用a.equals(b)这个写法,我们也可以用b.equals(a)这样写,但是这两个写法的结果可能不同,因为equals()方法可能会被重写。 2. 在...
7、**重写hashCode()方法的注意事项**: 重写`hashCode()`时,应确保它与`equals()`方法的逻辑一致。通常,`hashCode()`应该基于对象的那些参与`equals()`比较的属性来计算。如果两个对象`equals()`相等,它们的`...
本文将深入探讨`equals`方法的使用方法、重写注意事项以及与`hashCode`方法的关系。 ### Q1. 何时应该重写`equals`方法? 在需要比较对象的值而不是引用时,应重写`equals`方法。默认情况下,`equals`方法使用`==`...
代码注释的13条注意事项 作为一名IT专业人士,我将对代码注释的13条注意事项进行详细的解释和分析。 1. Comment each level(每个级别的注释有统一的风格) 在编写代码时,注释是非常重要的一部分。对于不同的...
在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们...理解其基本操作和注意事项,有助于编写出高效且准确的代码。
在Java中,`==`和`equals()`方法有着不同的用途。`==`比较的是对象的内存地址,而`equals()`通常用于比较对象的内容。默认情况下,`equals()`与`==`行为一致,但在自定义类中,你可能需要重写`equals()`来比较对象的...
- **注意事项**: - 要克隆的对象所属的类必须实现 `java.lang.Cloneable` 接口。 - 如果对象所属的类没有实现 `Cloneable` 接口,则调用 `clone()` 方法会抛出 `CloneNotSupportedException` 异常。 - `clone()...
### Struts 使用技巧和注意事项 #### 一、Struts Validate 使用详解 在 Struts 框架中,数据验证是一项非常重要的功能,它确保了应用程序能够接收到合法且符合预期的数据输入。Struts 提供了多种方式进行数据验证...
#### 重写hashCode的注意事项 1. **一致性**:在一个执行期间,只要对象的状态没有改变,其 `hashCode` 方法应该始终返回相同的值。 2. **性能考虑**:应尽可能减少碰撞(不同的对象具有相同的哈希码),同时保持...
5. 注意事项: - 不要在比较字符串时混用`==`和`equals()`。字符串是不可变对象,`"abc".equals("abc")`总是返回`true`,而`"abc" == "abc"`也通常是`true`,但直接比较字符串字面量是安全的,因为它们在编译时就...
下面将详细介绍`List.remove()`方法的两种用法及其注意事项。 首先,`remove(int index)`方法用于根据提供的索引从列表中移除一个元素。索引是从0开始的,所以`remove(0)`会删除列表的第一个元素,`remove(1)`会...
然而,正如标题和描述中提到的,使用`$.inArray()`时需要注意一些事项,因为JavaScript的弱类型特性可能会导致意外的结果。 `$.inArray(element, array)`方法接收两个参数:`element`是要查找的元素,`array`是待...
#### 五、注意事项 1. **实现`equals`必须同时实现`hashCode`**:如果你覆盖了`equals`方法,那么你也必须覆盖`hashCode`方法,以保证一致性。 2. **避免返回固定值**:不要在`hashCode`方法中总是返回一个固定的值...
- **注意事项**: 在比较对象时,如果对象重写了`equals`方法,则`equals`将根据重写的逻辑来比较对象。 **12. 静态变量和实例变量的区别?** - **知识点**: 静态变量属于类级别,所有对象共享一份副本;实例变量...
4. **注意事项**: - 在使用`equals`方法之前,应确保对象不是null,否则会抛出`NullPointerException`异常。 - 当使用自定义类时,如果没有重写`equals`方法,那么它将比较对象引用而不是实际的内容。 - 如果...
五、覆盖equals()时的注意事项 当重写equals()方法时,务必同时重写hashCode()方法,以保持equals()和hashCode()的一致性。此外,要遵循以下原则: 1. 自反性:对于任何非null引用x,x.equals(x)应返回true。 2. ...