集合的详解

集合概念

首先我们要来了解一下东西,首先得知道他是什么,集合在充当一个容器通俗的讲就是来装东西的,

分类:

现在大致把集合分为两种:一种是collection的单列和,=map的双列。

 总结:list(有序)

  • ArrayList
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程不安全,效率高
  • Vector
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程安全,效率低
  • LinkedList
    优点: 底层数据结构是链表,查询慢,增删快。
    缺点: 线程不安全,效率高
  • —Set 无序,唯一

    HashSet
    底层数据结构是哈希表。(无序,唯一)
    如何来保证元素唯一性?
    1.依赖两个方法:hashCode()和equals()

    LinkedHashSet
    底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
    1.由链表保证元素有序
    2.由哈希表保证元素唯一

    TreeSet
    底层数据结构是红黑树。(唯一,有序)(jdk1.0之前)
    1. 如何保证元素排序的呢?
    自然排序
    比较器排序
    2.如何保证元素唯一性的呢?
    根据比较的返回值是否是0来决定

  • 分别:

  •   当我们在选择哪种方式的时候是这样样考虑的。第一这个集合是不是有序的和这个集合的数据是不是重复的。还有就是在这个集合里面
  • 唯一吗?

    是:Set

    排序吗?

    是:TreeSet或LinkedHashSet
    否:HashSet
    如果你知道是Set,但是不知道是哪个Set,就用HashSet。

    否:List

    要安全吗?

    是:Vector
    否:ArrayList或者LinkedList

    查询多:ArrayList
    增删多:LinkedList
    如果你知道是List,但是不知道是哪个List,就用ArrayList

  • 这可以用来考虑我们使用哪种方法

  • Map    

  • 这个是双列的

 map 里面常用的是hashmap,hashmap 是无序的(还有hashtable)但是treemap 是有序 的。

  • 但是Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。
  • Hashtable是线程安全的,HashMap不是线程安全的。
    HashMap效率较高,Hashtable效率较低。
    如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。 查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。
    Hashtable不允许null值,HashMap允许null值(key和value都允许)
    父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap
     
  • 总结

  • Collection都是对单列 ,里面的list,是针对有有序的可以重复的,set是无序的但是不能重复,list里面有arrylist 和linkedlist上面那个遍历快但是删减慢第二个刚好相反。
  • set 是无序的里面的treeset 可以有序排序。
  • map 这个是双列的键和值对应值可以重复但是键不可以重复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python集合是一种无序且不重复的数据结构。它们类似于列表和元组,但是不允许有重复项。集合可以用于去重、交集、并集和差集等操作。下面是Python集合的详细介绍。 1. 创建集合 可以使用大括号{}或set()函数来创建一个空集合,也可以在大括号中直接输入元素来创建集合。例如: ```python # 创建空集合 set1 = set() print(set1) # set() # 创建有元素的集合 set2 = {1, 2, 3} print(set2) # {1, 2, 3} set3 = set([4, 5, 6]) print(set3) # {4, 5, 6} ``` 2. 集合操作 可以使用以下操作符和方法来操作Python集合: - 添加元素:add()方法、update()方法 - 删除元素:remove()方法、discard()方法、pop()方法 - 清空集合:clear()方法 - 特殊操作:交集&、并集|、差集-、对称差集^ 例如: ```python # 添加元素 set1.add(1) print(set1) # {1} set1.update([2, 3]) print(set1) # {1, 2, 3} # 删除元素 set1.remove(2) print(set1) # {1, 3} set1.discard(4) # 如果元素不存在,不会报错 print(set1) # {1, 3} set1.pop() # 随机删除一个元素 print(set1) # {3} # 清空集合 set1.clear() print(set1) # set() # 特殊操作 set2 = {1, 2, 3} set3 = {3, 4, 5} print(set2 & set3) # {3},交集 print(set2 | set3) # {1, 2, 3, 4, 5},并集 print(set2 - set3) # {1, 2},差集 print(set2 ^ set3) # {1, 2, 4, 5},对称差集 ``` 3. 集合方法 Python集合还有一些常用的方法,例如: - len()方法:返回集合中元素的个数 - in关键字:判断元素是否在集合中 - issubset()方法:判断一个集合是否是另一个集合的子集 - issuperset()方法:判断一个集合是否是另一个集合的超集 - union()方法:返回两个集合的并集 - intersection()方法:返回两个集合的交集 - difference()方法:返回两个集合的差集 - symmetric_difference()方法:返回两个集合的对称差集 例如: ```python set1 = {1, 2, 3} set2 = {3, 4, 5} print(len(set1)) # 3 print(2 in set1) # True print(4 in set1) # False print(set1.issubset(set2)) # False print(set2.issuperset(set1)) # False print(set1.union(set2)) # {1, 2, 3, 4, 5} print(set1.intersection(set2)) # {3} print(set1.difference(set2)) # {1, 2} print(set1.symmetric_difference(set2)) # {1, 2, 4, 5} ``` 总之,Python集合是一种非常实用的数据结构,可以用于去重、交集、并集和差集等操作。掌握集合的使用方法可以帮助你更加高效地处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值