JAVA重写equals和hashCode方法实现不定项分类统计

测试类:

package com.pap.test;

public class Item_Price {
	private String code;
	private double price;
	private double total_price;

	public Item_Price(String code, double price) {
		super();
		this.code = code;
		this.price = price;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public double getTotal_price() {
		return total_price;
	}

	public void setTotal_price(double total_price) {
		this.total_price = total_price;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((code == null) ? 0 : code.hashCode());
		long temp;
		temp = Double.doubleToLongBits(price);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Item_Price other = (Item_Price) obj;
		if (code == null) {
			if (other.code != null)
				return false;
		} else if (!code.equals(other.code))
			return false;
		if (Double.doubleToLongBits(price) != Double
				.doubleToLongBits(other.price))
			return false;
		return true;
	}
	
}


测试方法:

package com.pap.test;

import java.util.ArrayList;
import java.util.List;

public class TestStack {
	
	public static void main(String[] args) {
		List<Item_Price> items = new ArrayList<Item_Price>();
		Item_Price item_Price1 = new Item_Price("中药", 15);
		items.add(item_Price1);
		Item_Price item_Price2 = new Item_Price("西药", 20);
		items.add(item_Price2);
		Item_Price item_Price3 = new Item_Price("中药", 15);
		items.add(item_Price3);
		Item_Price item_Price4 = new Item_Price("手术", 27);
		items.add(item_Price4);
		Item_Price item_Price5 = new Item_Price("检查", 26);
		items.add(item_Price5);
		Item_Price item_Price6 = new Item_Price("西药", 20);
		items.add(item_Price6);
		List<Item_Price> list = new ArrayList<Item_Price>();
		//遍历
		for(Item_Price item : items){
			if(!list.contains(item)){
				item.setTotal_price(item.getPrice());
				list.add(item);
			}else {
				int index = list.indexOf(item);
				Item_Price item2 = list.get(index);
				item2.setTotal_price(item2.getTotal_price() + item.getPrice());
			}
		}
		//打印显示
		for(Item_Price item_Price : list){
			System.out.println(item_Price.getCode() + "费================" + item_Price.getTotal_price());
		}
	}
}


运行结果:

中药费================30.0
西药费================40.0
手术费================27.0
检查费================26.0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值