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));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集合Set)是 Python 中的一种数据结构,它是由一组无序且唯一的元素组成的。集合中的元素不重复,没有固定的顺序。你可以使用 set() 函数或者使用花括号({})来创建一个集合。 下面是一些集合的常用操作和用法: 1. 创建集合: - 使用 set() 函数创建一个空集合:`my_set = set()` - 使用花括号创建一个非空集合:`my_set = {1, 2, 3}` 2. 添加元素: - 使用 `add()` 方法添加单个元素:`my_set.add(4)` - 使用 `update()` 方法添加多个元素:`my_set.update([5, 6, 7])` 3. 删除元素: - 使用 `remove()` 方法删除指定元素,如果元素不存在会抛出 KeyError 异常:`my_set.remove(4)` - 使用 `discard()` 方法删除指定元素,如果元素不存在不会抛出异常:`my_set.discard(4)` - 使用 `pop()` 方法随机删除并返回一个元素:`my_set.pop()` 4. 集合操作: - 并集操作:`union()` 或者 `|` 操作符:`set1.union(set2)` 或者 `set1 | set2` - 交集操作:`intersection()` 或者 `&` 操作符:`set1.intersection(set2)` 或者 `set1 & set2` - 差集操作:`difference()` 或者 `-` 操作符:`set1.difference(set2)` 或者 `set1 - set2` - 对称差集操作:`symmetric_difference()` 或者 `^` 操作符:`set1.symmetric_difference(set2)` 或者 `set1 ^ set2` 5. 其他常用方法: - `len()` 方法获取集合的长度:`len(my_set)` - `in` 关键字检查元素是否存在于集合中:`element in my_set` 这些是集合的基本用法,你可以根据自己的需求灵活运用。希望对你有所帮助!如果有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值