Setウェイト操作実装

1982 ワード

問題:Set重量判定操作実現
解決:
poクラスのequals hashCodeメソッドを書き換える
例:
1.poクラス

public class Man {
	private int id ;
	private String name ;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Man [id=" + id + ", name=" + name + "]";
	}
}

ユニットテストクラス:

	public static void main(String[] args) {

		Set<Man> set = new HashSet<Man>();
		Man m = new Man();
		m.setId(1);
		m.setName("1");
		Man m2 = new Man();
		m2.setId(1);
		m2.setName("2");
		set.add(m);
		set.add(m2);
		System.out.println(" :"+set.size()+" "+" :"+set.toString());
	}

コンソールウィンドウ出力
集合長:2集合内容:[Man[id=1,name=1],Man[id=1,name=2]]
2.修正
Poクラス、追加

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Man other = (Man) obj;
		if (id != other.id)
			return false;
		return true;
	}

コンソールウィンドウ出力
集合長:1集合内容:[Man[id=1,name=1]]
操作:
Eclipseでは、書き換え方法のショートカットが用意されています.source->generate hashcode()and equals->
属性の選択
理由:
参考文献:
http://lukuijun.iteye.com/blog/340520