java集合

浅析java集合

简介
集合或数组都是对多个数据进行存储操作,也被称为容器。
注意:这里的存储是指内存级别的,而不是磁盘持久化(图片、视频等)
为什么要使用集合
1:数组定长,不能更改,集合可以;
2:集合增删效率大于数组;
3:集合可以获取元素数量,而数组没有提供这个方法;
4:数组中的数据有序可重复,不能无序不重复
集合两大阵营
在这里插入图片描述

ArrayList与LinkedList的区别

1.ArrayList查询快,增删改慢;LinkedList查询慢,增删改快(ArrayList底层是数组有下标,方便查询,也因此导致每次增删改都需要改变下标,所以慢;LinkedList底层是双向链表,在源码内部类中每次查询需要一级一级往下查,所以慢,但增删改可以直接操作,所以快)

扩展

ArrayList的1.7数组基本容量是10,每次扩容为之前的1.5倍;1.8数据基本容量是{},调用add()方法后赋值10的容量(节约空间)

HashMap简介
jdk1.7底层是哈希表(链表加数组)
jdk1.8底层是数组+链表+红黑树
红黑树:自平衡的二叉查找树(根节点是黑色,不能有2个连续的红色节点,每个红色节点子节点是2个黑色节点)
链表插入的方式:7上8下(jdk1.7从上面插入,1.8从下面插入)
最大容量为16
表结构:
|key|value|hash值|下一个元素的位置|
HashSet
底层:哈希表(数组+链表)
往HashSet里面存数据,一定要有:equals,hashcode这2个方法
在这里插入图片描述

线程不安全
用ConcurrentHashMap(分段锁解决),不用像Synchronizd那样锁住整个表,只锁住一个桶,更高效
TreeMap简介
特点:唯一,有序(升序或降序)
原理:二叉树
放入集合的key,一定实现了比较器(内部或外部比较器)
TreeSet
特点:唯一,升序(二叉树中序遍历:左 根 右)

Arraylist与vector的区别
Arraylist:扩容为原来的1.5倍,线程不安全,效率高
vector:扩容为原来的2倍,线程安全,效率低

stack
代表后进先出(LIFO)的堆栈对象,允许一个向量被视为堆栈

泛型

jdk1.5引入
相当于一个标签<>
指定了集合中的数据类型
便于遍历
泛型的类型都是引用数据类型(还有一个string),不能是基本数据类型
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值