set集合保证元素唯一性,你要看是什么元素,但是简单说,hashSet保证元素唯一性靠的就是底层的hash表和equlas方法,因为hashset底层是hash表结构,之前学过数据结构的人都知道的;而treeset就像上面所说底层是二叉树结构,二叉树大的会存在右边,小的会存放在左边。它是怎么实现的呢?就是通过实现comparator(comparable)接口,重写compare(compareTo方法)。。。。
而为什么Integer和String类型不用复写那些方法,存入Set里面遍历出来就是有序的呢?因为它们都已经实现了comparator和HashCode/equalse方法,而你若是存放自定义对象,就需要你自己去实现了,按照你自己想要的规则 |