import java.util.*;

public class Main {
	public static void main (String[] args) {
		Set set = new HashSet();
		Data d = new Data(1,"foo");
		set.add(d);
		set.add(new Data(2,"bar"));
		System.out.println(set.contains(d));
		d.field1 = 2;
		System.out.println(set.contains(d));
	}
	
	public static class Data {
		int field1;
		String field2;
		
		Data(int f1, String f2) {
			field1 = f1;
			field2 = f2;
		}
		
		public int hashCode() {
			return field2.hashCode() + field1;
		}
		
		public boolean equals(Object o) {
			if(!(o instanceof Data)) return false;
			Data od = (Data)o;
			return od.field1 == this.field1 && od.field2.equals(this.field2);

		}
	}
}