关于集合

1.集合和数组区别?

  • 数组不可变,集合可变。
  • 数组可以存取基本数据类型和引用数据类型,集合只能存储引用数据类型,如果要存储基本数据类型,存储基本数据类型的包装类。

2.集合分类?
在这里插入图片描述

3.List和Set都是单列集合

  • List集合存储有序,可重复,有索引。
  • Set集合存储无序,不可重复,无索引。

4.ArrayList底层是数组,查询快,增删慢;LinkedList底层是链表,查询慢,增删快。
5.HashSet底层数据结构是哈希表,存储无序且不重复,存入的字符底层会自动根据哈希值(jdk根据对象地址或字符串或数字计算出来的int类型的数值)进行排序,排序规则:jdk1.8之前使用数组+链表+哈希算法,jdk1.8之后使用数组+链表+红黑树+哈希算法(当链表长度大于8时,链表将转化为红黑树)。(至于hash表是如何实现扩容的,参考我另一篇博客:hash表扩容机制
在这里插入图片描述
在这里插入图片描述
6.TreeSet没有索引且不能存储重复元素,存入的元素会根据一定规则排序

  • 自然排序:自定义对象时实现Comparable接口,重写compareTo方法,根据返回值进行排序(默认使用自然排序)
  • 比较器排序:创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序

两种排序的排序规则

  • 如果返回值为负数,则表示要存入的元素是较小的值,存左边
  • 如果返回值为0,则表示要存入的元素和集合中的元素重复了,不存储
  • 如果返回值为正数,则表示要存入的元素是较大的值,存右边

7.map是双列集合,由键和值构成键值对,一个键对应一个值,键不能重复,值可以重复。遍历map集合有两种方式,1:获取所有键的集合,遍历键的集合根据键获取每个值。2:获取所有键值对对象的集合,然后遍历键值对对象,获取每个键值对的键和值
8.HashMap和TreeMap都是双列集合

  • HashMap底层是哈希表结构,根据hashCode和equals保证键的唯一性,如果存储自定义对象,需要重写hashCode和equals方法,HashMap是线程不安全的,Hashtable和CurrentHashMap是线程安全的
  • TreeMap底层是红黑树结构,根据自然排序和比较器排序对键进行排序
关于Python中集合的语法,以下是一些常用操作: 1. 创建集合: 使用大括号 `{}` 或者使用 `set()` 函数来创建一个空集合。 例如:`my_set = {1, 2, 3}` 或者 `my_set = set([1, 2, 3])` 2. 添加元素: 使用 `.add()` 方法来向集合中添加一个元素。 例如:`my_set.add(4)` 3. 删除元素: 使用 `.remove()` 方法来删除集合中的指定元素。 例如:`my_set.remove(2)` 4. 集合运算: - 并集:使用 `|` 或者 `.union()` 方法。 例如:`union_set = set1 | set2` 或者 `union_set = set1.union(set2)` - 交集:使用 `&` 或者 `.intersection()` 方法。 例如:`intersection_set = set1 & set2` 或者 `intersection_set = set1.intersection(set2)` - 差集:使用 `-` 或者 `.difference()` 方法。 例如:`difference_set = set1 - set2` 或者 `difference_set = set1.difference(set2)` - 对称差集:使用 `^` 或者 `.symmetric_difference()` 方法。 例如:`symmetric_difference_set = set1 ^ set2` 或者 `symmetric_difference_set = set1.symmetric_difference(set2)` 5. 集合方法: - `.add(element)`:向集合中添加元素。 - `.remove(element)`:从集合中删除指定元素,如果元素不存在会引发 KeyError。 - `.discard(element)`:从集合中删除指定元素,如果元素不存在不会引发错误。 - `.clear()`:清空集合中的所有元素。 - `.copy()`:复制集合。 - `.pop()`:随机删除并返回集合中的一个元素。 - `.update(other_set)`:将另一个集合的元素添加到当前集合中。 - `.union(other_set)`:返回两个集合的并集。 - `.intersection(other_set)`:返回两个集合的交集。 - `.difference(other_set)`:返回两个集合的差集。 - `.symmetric_difference(other_set)`:返回两个集合的对称差集。 这些是关于Python集合的一些基本操作和方法,希望能对你有所帮助!如果你有更多关于集合的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值