java的set容器,容器中每次之后保存一个相同的值。每次压入新对象的时候,都会与容器中所有存在的老对象进行比较,当新对象的hashCode 与equals,与容器中已经存在的任何一个老对象相同时,就认为两个对象时相同的,就用新对象替换掉老对象
package df.util.enjoysrc.mylbh;
import df.util.type.StringUtil;
import java.lang.String;
import java.lang.System;
import java.util.HashSet;
import java.util.Set;
/**
* Created with IntelliJ IDEA.
* User: wulong
* Date: 13-12-16
* Time: 下午3:15
* To change this template use File | Settings | File Templates.
*/
public class TestJ {
class Elem {
public String key;
public int val;
public Elem(String pKey, int pVal) {
key = pKey;
val = pVal;
}
@Override
public int hashCode() {
// return val;
return 10; //hashCode与 equals同时相等时,就认为是同一个对象
}
@Override
public boolean equals(Object o) {
return (null != o)
&& StringUtil.equals(((Elem) o).key, key)
&& ((Elem) o).val == val;
}
}
private void test() {
Set sets = new HashSet();
sets.add(new Elem("key1", 12));
sets.add(new Elem("key1", 11));
System.out.print("haitag " + sets.size());
}
public static void main(String[] args) {
new TestJ().test();
}
}