ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

HashSet与TreeSet 的区别

HashSet与TreeSet 的区别 在Java实际的开发中经常会遇到元素去重的场景这时候就会想到使用HashSet进行去重但去重且需要排序呢那这时候就需要使用TreeSet了。Java中HashSet和TreeSet的区别是什么区别HashSetTreeSet实现接口都实现了顶级接口Set是否线程安全线程非安全是否可存入null可以有且只能存入一个null不可以实现方式HashSet是哈希表实现HashMap的简化版TreeSet是红黑树实现TreeMap的简化版是否可以排序不可以可以性能HashSet性能通常略优于TreeSet在需要排序时使用TreeSet保存数据时判定是否唯一去重方式Hashset是通过复写hashCode()方法和equals()方法来保证Treeset是通过Compareable接口的compareto方法来保证时间复杂度0(1)0(logn)PSTreeSet自然排序自然排序使用要排序元素的CompareToObject obj方法来比较元素之间大小关系然后将元素按照升序排列。Java提供了一个Comparable接口该接口里定义了一个compareTo(Object obj)方法该方法返回一个整数值实现了该接口的对象就可以比较大小。obj1.compareTo(obj2)方法如果返回0则说明被比较的两个对象相等如果返回一个正数则表明obj1大于obj2如果是 负数则表明obj1小于obj2。TreeSet定制排序自然排序是根据集合元素的大小以升序排列如果要定制排序应该使用Comparator接口实现 int compare(T o1,T o2)方法。
返回列表