今天犯了一个低级错误,我在新建一个class的时候居然把class名字写成了LinkedHashSet,这直接导致我在这个类里面没法使用add(Object obj)方法,还是在百度知道得到的答案。。。。
int hashCode()是Set接口的方法
HashSet最常用了,它判断两个元素相等的标准是equals()相等、hashCode()方法也相等.而且涉及一个重写hashCode()的方法:首先根据自身filed得到一个int类型的hashCode值,然后return f1.hashCode()+(int)f2。
LinkedHashSet的特点是输出的顺序和添加顺序一样。
TreeSet可以自动排序,判断相等的标准是compareTo(Object obj)为0,就相等。
自然排序实现的Comparable接口,里面有一个compareTo(Object obj)方法。因此如果使集合按照指定的field排序的话,那就重写这个方法,别忘了implements Comparable接口。
定制排序通过Comparator接口,见书p291例子。