Set和存储顺序

Set(interface):存入Set的每个元素都必须是唯一的,因为set不保存重复元素。加入Set的元素必须定义 equals()方法以确保对象的唯一性。Set 与 Collection 有完全一样的接口。Set接口不保 证维护元素的次序

HashSet : 为快速查找而设计的Set。 存入HashSet的元素必须定义hashCode()

TreeSet :保持次序的Set。底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现 Comparable接口

LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用 迭代器遍历Set 时,结果会按元素插入的次序显示。元素也必须定义hashCode()方法

必须为 hashset 和 treeset 都创建一个equals()方法,但是hashcode()只有在这个类会被置于hashset或者linkedhashset中时才是必需的。 但是对于良好的编程风格而言,你应该在复写equals()方法的时候同时覆盖hashcode()方法