写一个java集合_身为一个合格的java开发,这些java集合的知识你得知道,写的很细...

数据结构

数组

e10c7d9f4fec0a6fb5f324ac7bb52409.png

队列

1c23b988c5134becb0657b6bc6d98897.png

链表

二叉树

集合

Collection

List集合

List集合接口**的实现类 (1) ArrayList(基于数组创建的容器类) 特点:数组结构,增删慢,查找快,每次扩容为原来的1.5倍 格式: ArrayList 引用变量名 = new ArrayList<>( ) 三个构造方法

1、 无参(创建默认长度为10的集合)

2、 有参 (创建指定长度的集合)

3、 传进一个Collection的对象 (List和Set的所有集合) 提供的方法

(2) Vector(基于数组创建的容器类) 特点:数组结构,增删慢,查找快;基本与ArrayList相同,但Vector能指定每次扩容的倍数

(3) LinkdeList(双向链表结构) 特点:增删快,查找慢、可以模仿栈数据结构进行数据存储、也可以模仿单端队列数据结构存储数据、可以模仿双端队列数据结构进行数据存储

Set集合

Set集合接口只能存放不重复的数据(null也只能存放一个),使用方法基本和List相同 它的实现类有 (1)HashSet(散列存储,一种哈希表结构)(依赖HashMap实现的) 存放在HashSet的数据是无序存放的,所以在迭代出来的数据顺序和我们输入的顺序是无关的 ★没有获取数据的get()方法,可以toArray转为数组或者使用迭代器Iterator进行获取 (2)TreeSet(二叉树存储数据结构)(依赖TreeMap实现的) ★TreeSet的迭代器有两种 1、 快速失败:因为树集是可以多线程访问的,当迭代器正常遍历集合长度时,外部对树集进行了增删,迭代器读取到错误的数据此时就会抛出异常ConcurrentModificationException 2、 安全失败:迭代器进行迭代时会对树集进行备份,对其备份进行迭代,此时就算数据发生了改变与原树集无关 ★TreeSet的数据输出根据其数据在阿斯克码表(Unicode)的顺序输出的

Map

Map:存放两个值,一个key(不可重复),一个value,key和value存在映射关系,通 过key(相当于索引,不是有序的)找到其对应的value,对value进行增删改 ★数组和Collection也有key,只不过key是系统自动生成的下标,线性有序数据0、1、2…. HashSet和TreeSet就是使用了Map的key实现了存放不重复数据的特点,它们的value都被定义为了常量 ★Map的遍历,使用setKey的方法返回所有的key,在使用get(key)方法的到对应的value ★在用put(key,value)和remove(key,value)进行增删时如果key已经有对应的数据value,则返回上一个数据value;如果没有value,则返回null

HashMap

底层实现哈希表(也叫散列表) hashCode:哈希码值 ★哈希码值的计算自己定义,能让数据均匀分布即可 每个数据在哈希表的存储下标=数据的哈希值/哈希表长度取余 哈希表结构

6948a3ace7434a4825ebe94fb9286214.png

存储过程

3edce422db6233d5fa22adcfe4b29d8f.png

Iterator

(1)Iterator:可用于迭代(遍历)Collection接口下的所有集合(List和Set) (2) ListIterator:专门用于List集合的迭代(遍历) ★ListIterator比Iterator多了指针向上移动的方法 ★Iterator的指针指向集合ArrayList.add添加的数据的上方,如果你用Iterator.add添加数据,只能在指针指向的地方插入,并且指针并不会发生移动,但集合的索引下标会发生改变

对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常

(3)forEach(增强for循环) 用于数组或者集合(Collection),本质是利用迭代器进行循环迭代 格式: for(变量类型 变量名(相当于数组的[ i ]):数组名或者集合名){ }

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值