JavaSE基础学习笔记-集合框架2
今天复习了一下Java集合框架的另一个成员Set 和 Map,发现集合不是那么简单是,当然想会用很容易,但是理解当中的一些原理,还是要花些功夫。 首先说一下Set集合。 Set集合是一个完美的Collection子类,因为Set集合的方法完全继承自Collection,没有任何特有的方法,即便如此,Set和List可以说是非常不同的两个集合子类,Set本身也是一个接口,它有许多实现类,最常见的有HashSet,TreeSet和LinkedHashSet. Set集合中不允许存储相同元素,同时就这三个子类而言有着完全不同的特性。 当你尝试将一个自定义类型的对象放置到一个Set中,你就必须要考虑应用哪个Set的子类,并且根据这个子类来对你所创建的对象的类进行进一步编码。 首先,HashSet,从字面上很容易看出,这个机会有一个基于哈希表的数据结构,如果一个类对象被装入HashSet集合那他就必须同时复写Object的equals方法和hashCode方法,具体原因还没弄太明白,总的来说就是不因为不能保证元素的唯一性,而覆盖这两个方法根据自己的需求对其进行编码可以很好的解决这个问题 然后是TreeSet,这个集合是基于红-黑树的数据结构,核心思想就是比较两个元素的大小,然后根据比较结果来对元素进行具体的内存分配,所以元素的比较性对于TreeSet而言是必须的