Set子接口只是简单地继承了Collection接口,并没有扩充其他的方法。Set集合中不允许保存重复的数据。在Set接口下有两个常用的子类:HashSet、TreeSet。HashSet是散列存放数据,而TreeSet是有序存放的子类,默认按照字母的升序排列。在实际开发中如果没有排序要求,应优先考虑HashSet子类。
关于数据排序
TreeSet子类中保存的内容的排序,是依靠比较器接口(Comparable)实现的,即如果要利用TreeSet保存任意类的对象,那么该对象所在的类必须要实现java.lang.Comparable接口,而且在覆写的compareTo方法中,需要比较所有属性。
关于重复元素
除TreeSet以外的其他子类(例如HashSet)如果要消除重复元素,则必须依靠Object类中提供的两个方法.
public int hashCode()
:取得哈希码,判断对象的哈希码是否相同,依靠哈希码取得对象内容。public boolean equals(Object obj)
:将对象的属性进行依次的比较。
示例
利用HashSet子类保存自定义对象,需要利用hashCode()和equals()两个方法,这两个方法可以利用Eclipse自带的工具生成。操作步骤如下:
【Source】->【Generator hashCode() and equals()】->【选择要参与计算的属性】。