Set集合的运用

今天阿里笔试崩了,脑子里忘了Set获取元素的用法了,崩盘了,有时候Set集合的特性真好用,正好现在整理一下Set集合
下面不同的Set有统一的特性,那就是不允许集合里的元素重复

HashSet

  1. 存储顺序和添加顺序不同,
  2. HashSet不是同步的,如果多个线程修改集合中的值可能会出现错误,线程不安全
  3. HastSet允许集合中的元素为null

部分特点和HashMap很像,
在HashSet集合中,判断两个元素相同的标准是:两个对象通过equals()方法相等,且HashCode()方法的返回值也相等

LinkedHashSet

LinkedHashSet是HashSet的子类,根据元素的HashCode值决定元素的存储位置,看到Linked就是知道它也是用链表来存储的,所以可以让元素以插入的顺序存储,这样取数据也会有顺序,
感觉和LinkedHashMap差不多
因为LinkedHashSet内部使用LinkedHashMap实现。

TreeSet

TreeSet是SortedSet接口的实现类,看到Sort就知道这是个有排序的set集合,它是按照一定的规则排序,比如升序排序(默认的),降序排序,
当然如果是自定义对象就需要自己进行比较了

  1. 需要被排序的类实现Comparable接口 , 重写其中的 comparato
  2. 这种方法需要一个新的类实现Comparator接口 , 重写其中的Compare 方法
    这个链接可以去看看~~

把set集合转成list集合就可以获取指定位置的元素了

 Set<Integer> set = new HashSet<Integer>();
 List<Integer> list1 = new  ArrayList<Integer>(set);

使用LinkedHashSet给ArrayList去重并保持顺序

 List<String> list= new ArrayList<String>(new LinkedHashSet<String>(list));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值