集合的一点小总结

集合

1.长度:动态扩容
2.内容:可以是基本数据类型,也可以是引用数据类型
3.元素:存储的元素可以多元化,但是一般存储的都是同一数据类型

  • Collection集合在这里插入图片描述

List和Set

区别:

  • List有序,而Set的存储和取出都是无序的
  • List中的元素可以重复,而Set不行

List

  • ArrayList:增删慢,查询快,效率高,线程不安全
  • LinkedList:增删快,查询慢,效率高,线程不安全
  • Vector:增删慢,查询快,效率高,线程安全

所以,ArrayList更加偏向于需要查询数据的存储形式,因为他的地址连续。

而LinkedList地址随机,是基于链表的结构,所以在增删上有很大的优势。

在ArrayList的无参构造函数中,构造的长度不是一开始就为10的,是第一个对象存储进去之后,list的长度初始化为10

Set

  • HashSet:底层是哈希表,存储无序,且所有元素只能单一存在,效率高,线程不安全,靠的是hashCode()和equals()来判断是否为统一对象。
  • TreeSet:底层是二叉树来实现的,所以在创建TreeSet对象时,需要重写Comparable接口里的CompareTo()方法
  • LinkedHashList:底层用链表和哈希表存储,保证了存储的顺序,线程不安全,效率高

值得注意的是,因为List是有序的,所以不仅可以用迭代,也可以用下标来遍历,但是Set不行,因为Set的存储完全是无序的,所以只能通过迭代来遍历

Map

Map用来保存具有映射关系的一对数据,分别是key和value,在这之中,key不能重复

HashMap

  • HashMap线程不安全
  • 可以放入null值的key或者value,但是key只能有一个为null
  • key必须实现hashCode和equals的方法(因为key的根本是一个set)
  • 因为key其实是set存储,所以也是不能保证键值对顺序的
  • 不要使用可变对象作为key值,因为会导致hashCode的变化

HashTable

  • 线程安全
  • key和value中不能有空值
  • 效率较差
  • 同样的和HashMap一样,也是不能保证键值对的顺序,并且在使用时必须实现对象的equals和hashCode方法

TreeMap

  • key的存储其实是TreeSet,所以要按照TreeSet那一套来
  • 因为是TreeSet存储的key,所以他是能够排序的,基本数据类型可以自然排序,自定义数据类型需要重写comparable接口里的compareTo方法
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值