Java 两种TreeSet集合自定义对象属性排序,Comparator接口 或 Comparable接口

前言:TreeSet和HashSet的区别在于, HashSet不可以进行排序,TreeSet可以进行排序, 默认使用字典顺序排序, 也可以进行自定义排序。


1,但实际使用HashSet时会发现,HashSet好像会自动进行了排序,为什么呢?

原因:HashSet是set的子集,Set的底层是Map实现的,Map的实现是散列码,就是根据key的hashcode计算出来的,通过这个hashcode计算出一个元素放在数组中的index,这样是为了快速查找元素,减少相等的判断。 从而实现了自动排序的现象。

public class Test {
    public static void main(String[] args) {
        Set<String> tt = new HashSet<>();
        tt.add("999");
        tt.add(null);
        tt.add(null);
        tt.add("222");
        tt.add("111");
        tt.add("222");
        System.out.println(tt);
    }
}
[null, 111, 222, 999]

 

<
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值