equals方法在HashSet与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中的行为会有一些差异。这点要注意。

西兴农厨饭店冬瓜味道不错!

你可能感兴趣的:(hashset)