我们知道equals方法在HashSet中起到了contains中判断是否为同一对象的作用。
public class CartItem extends BaseObject {
private Product product;
private Integer amount;
public boolean equals(Object o) {
return this.product.getId().equals(((CartItem) o).getProduct().getId());
}
public int hashCode() {
return this.product.getId().intValue();
}
public Double getTotal() {
return DoubleUtil.multiply(this.product.getPrice(),
Double.valueOf(amount));
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
}
原以为在2种set中判断 equals方法发生的行为应该是一致的。但可惜不是。
items.contains(item)
如果items是 HashSet 是 true
如果是TreeSet 那就是false。
但在TreeSet中的行为会有一些差异。这点要注意。
西兴农厨饭店冬瓜味道不错!
分享到:
相关推荐
HashSet 和 TreeSet 是 Java 中两种常用的 Set 集合实现,它们都继承自 Set 接口,但实现方式和特性上存在显著差异。 首先,HashSet 是基于哈希表(HashMap 实例)来存储元素的,因此它提供了快速的插入、删除和...
当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值来决定该对象在 HashSet 中的存储位置。简单地说,HashSet 集合判断两个元素相等的...
在Java编程语言中,集合框架是处理数据的...在使用这些集合类时,确保正确地实现了equals()、hashCode()(对于HashSet和LinkedHashSet)以及Comparable或Comparator(对于TreeSet)方法,是保证集合行为正确性的关键。
在Java编程语言中,集合框架是处理对象组的重要工具,其中`HashSet`和`TreeSet`是两种常见的接口实现类,分别提供了不同的功能和性能特性。本教程将深入探讨这两个集合类以及它们与比较器(Comparator)的关系。 ...
在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...
在这个例子中,`equals`方法根据`name`和`age`属性来判断两个`Person`对象是否相等,而`hashCode`方法也综合考虑了这两个属性,以确保`equals`方法返回`true`的对象具有相同的哈希码。 #### 七、总结 在Java中,...
在Java编程中,HashMap、HashSet、TreeMap和TreeSet是四种常见的集合类,它们各自有特定的用途和内部实现机制。这些数据结构用于存储和管理数据,其中HashMap和HashSet是基于哈希表实现的,而TreeMap和TreeSet则是...
在使用HashSet时,需要注意的是,需要重写hashcode和equals方法,以确保元素的唯一性。如果hashcode返回的结果都一样,可以吗?答案是不能,因为那样的话,HashSet将无法保证元素的唯一性。 TreeSet TreeSet是Set...
同时,源码分析也能帮助我们理解HashMap的扩容机制,以及为什么即使两个对象的hashCode相同,它们仍然可以在HashSet中区分(因为equals()方法的正确实现)。 工具在学习和使用集合框架时也扮演着重要角色。例如,...
HashSet存储的对象,需要重写hashCode()和equals()两个方法。 Iterator迭代器 Iterator是一种设计模式,提供了遍历集合的能力。Iterator提供了hasNext()和next()两个方法,分别用于检查是否有可迭代的元素和返回...
在Java集合框架中,TreeSet是一个重要的数据结构,它是Set接口的实现类之一,与HashSet和LinkedHashSet不同,TreeSet具有排序功能,这是因为其不仅继承自AbstractSet,还实现了SortedSet和NavigableSet接口。...
`equals()`方法用于判断两个对象是否相等,而`hashCode()`方法则与对象在哈希表中的存储位置相关。 1. `equals()`方法: - 默认情况下,`equals()`方法会比较两个对象的引用是否指向同一块内存空间,即检查它们...
Set集合在Java编程中扮演着重要的角色,它是一种不允许元素重复的...在处理自定义对象时,确保正确地重写`equals()`和`hashCode()`方法至关重要,因为这是判断对象是否相等的标准,特别是在使用HashSet和TreeSet时。
当向HashSet中添加元素时,元素的`hashCode()`和`equals()`方法会被调用来判断是否已经存在相同元素。如果两个对象的`hashCode()`相等并且`equals()`返回true,那么它们被视为同一个对象,HashSet将不会存储重复的...
在实际开发中,选择HashSet还是TreeSet取决于需求:HashSet适合快速查找且对元素顺序无要求的情况;而TreeSet适用于需要排序或者导航查找的场景。正确实现元素类的equals()和hashCode()方法对于保证HashSet的唯一性...
Java集合原理涵盖了Java中各种集合类的使用和实现,包括ArrayList、LinkedList、HashSet、TreeSet等。这些集合类提供了不同的数据结构和运算方式,以便于开发者更方便地处理数据。 本资源涵盖了Java面试题的基础...
Java习题六 本资源摘要信息涵盖了 Java 中的集合框架,包括 TreeSet、List、...在将键值对存储到 Map 中时,可以使用 put() 方法,然后使用 keySet() 方法获取键的集合,最后使用 Iterator 迭代键的集合来打印键值对。
在这个例子中,equals()方法只检查两个学生的id是否相等,而hashCode()方法则基于id的哈希值来确定对象的位置。这样,当我们使用HashSet或TreeSet存储Student对象时,如果有两个学生具有相同的学号,Set会识别它们为...
- Set接口:不允许重复元素,`add()`, `equals()`, `hashCode()`有特殊限制,例如HashSet和TreeSet。 - SortedSet接口:在Set的基础上增加排序功能,元素按升序排列,可能抛出ClassCastException和...