集合

一.

集合继承的体系结构
我们常用的也就是 Arraylist hashset hashmap linkedlist
集合的继承体系结构
2.
List接口的两个实现类
Arraylist 和 LinkedList

1.Arraylist
特点:
ArrarList底层是一个Object类型的数组 默认长度是10(1.9之前,1.9之后构造默认一个空的数组,使用的时候才会开辟新的长度) 扩容是原来长度的 1.5倍 上限是Integer最大值 - 8
ArrayList是有序的 元素可以重复 可以为null 线程不安全的
ArrayList查询效率高 增 删 效率低 因为要复制移动数组
在这里插入图片描述

2.LinkedList
特点:
LinkedList 是一个双向链表 无序的 可以重复的 没有默认大小 也没有大小上限
LinkedList增删效率高 查询效率低 因为没有下标 特别是对首尾进行操作 非常方便
增删改速度快 因为不需要频繁的移动元素
查询的效率低 因为没有下标的概念 也就是说或 linkedlist是无序的 可重复
没有默认大小 没有扩容的概念 只要内存够大 没有上限

**注:**千万不要对linkedlist使用get来获取元素 never 因为linkedlist是无序的 是没有下标的 使用这种get的方式将会每次获取元素都从头找一遍 会让时间复杂度攀升 效率大大下降
可用增强for循环 或者迭代器来输出
在这里插入图片描述

2.5 set集合

2、 Set集合
 a) 无序(存储和取出顺序不一致,有可能会一致),但是元素唯一,不能重复
 b) b) 实现类
  i. HashSet
   1. 底层数据是哈希表
   2. 通过两个方法hashCode()和equals()保证元素的唯一性,方法自动生成
   3. 子类LinkedHashSet底层数据结构是链表和哈希表,由链表保证元素有序,
    由哈希表保证元素唯一。
  ii. TreeSet
   1. 底层数据是红黑二叉树
   2. 排序方式:自然排序、比较器排序
   3. 通过比较返回值是否为0来保证元素的唯一性。

2.1、 HashSet类:
 a) 不保证set的迭代顺序,
 b) 当存储对象时需要重写equals()和hashCode()方法(可以用Eclipse自动生成此方法

3.map集合 之hashmap
1.hashmap特点
HashMap底层是一个数组+单项链表的数据结构 无序存储
当我们调用hashmap的无参构造是 默认数组长度是 16
HashMap有一个 负载 因子 0.75 也就是扩容的条件或者机制的阈值
也就是说我们的HashMap的空间当使用率达到百分之75的时候 会扩容 2倍
HashMap仍然是线程不安全的
map的key和value均可以为位null (key为null则默认其对应的数组下标为零)
重复对已存在的key赋值 会覆盖原来的value
效率比较高 但是有限制 数据结构必须是key-value
占用空间比较大 (元素有两个内容 一个键 一个是值 另外就是这个HashMap是无序的 )

注: 可用增强for循环 或者迭代器来输出
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值