equals步骤在HashSet与TreeSet中的行为差异
equals方法在HashSet与TreeSet中的行为差异
我们知道equals方法在HashSet中起到了contains中判断是否为同一对象的作用。
原以为在2种set中判断 equals方法发生的行为应该是一致的。但可惜不是。
如果items是 HashSet 是 true
如果是TreeSet 那就是false。
但在TreeSet中的行为会有一些差异。这点要注意。
西兴农厨饭店冬瓜味道不错!
我们知道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中的行为会有一些差异。这点要注意。
西兴农厨饭店冬瓜味道不错!