集合简单笔记

集合简单笔记

List和set总结

  • List、Set都继承自Collection接口,Map不是。

  • List特点:元素有放入顺序,元素可重复。Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉。(元素在Set中的位置根据HashCode决定)。

  • Set和List对比:

    • List:和数组类似,List可以动态增长,查找元素效率高,插入、删除元素效率低,因为会引起其他元素位置的改变。
    • Set:检索元素效率低,插入删除元素效率高,插入和删除不会改变其他元素位置的改变。
  • ArrayList和LinkedList的区别和场景

    • ArrayList:
      • 优点:ArrayList时实现了基于动态数组的数据结构,因为地址连续,一旦数据存好了,查询操作效率会比较高。
      • 缺点:因为地址连续,ArrayList要移动数据,所以插入和删除操作效率比较低
    • LinkedList
      • 优点:LinkList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新加和删除操作,LinkedList会比较占优势。LinkedList适合用于头尾操作或插入指定位置的场景。
      • 缺点:因为LinkedList要移动指针,所以查询操作性能比较低。
  • TreeSet是二叉树(红黑树的数据结构)实现的,TreeSet中的数据是自动排好的,不允许放入null,值不允许重复。

  • HashSet是哈希表实现的,HashSet中的数据是无须的,可以放入null,但只能放入一个null,值不允许重复

    Map

  • Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,他们都可以使用任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。

  • HashMap:非线程安全。基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()(二者可以重写),为了优化HashMap空间的使用,可以调优初始容量和负载因子。

  • TreeMap:非线程安全基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值