Java collection流水记录

二话不说,直接上图(盗的) 发现抄别人的图根本不明白,不如自己画一遍记忆深刻(持续更新),过程中还发现的一个问题,当前还涉及不到,先Todo一下。
在这里插入图片描述

TODO

1、在整理collection结构的时候发现java子类会实现父类已经实现的接口,究其原因,是反射的动态代理的时候会用到(这里还未涉及,之后再学习)

1、stack(栈)

继承Vector类,有以下几个方法:
在这里插入图片描述

2、数组

脑中突然出现一个想法,Java数组属于内置类型么?如果是内置类型,分配资源要用new关键字,况且还有一个Array的类型,难不成Array是数组的包装类…

嗯,没错,无知使得我想象力无限~~~首先找了一下Array类,在API中一顿找都没找到,从别人的文章中找到了,连带扒出另一个很像的Arrays类,是一个操作数组的方法类。
在这里插入图片描述
回归问题,Java数组和Array类究竟是啥关系,附一个链接(https://www.cnblogs.com/wuchangming/archive/2013/03/28/2986184.html),最初搜到的答案,看了源码也没看懂,文章里讲“Java中的所有数组都是通过Array类实例化。Array类没有public的构造方法,数组是通过Array的newInstance()方法进行实例化,而这个方法会调用底层C代码开辟内存空间”,先这样理解一下。

Arrays

如前所述,‘java.util.Arrays’是一个方法类,所有的方法都是static方法

方法名用法
copyOf(arr, length)从头截取一定长度,返回同类型数组
copyOf(arr, from, to)截取范围内的一段, 返回同类型数组
equals(arr1, arr2)比较两个数组是否相等,返回boolean

3、Queue

Queue接口定义的方法有

返回值方法功能
booleanadd (E e)尾部添加元素 空间不足抛异常
Eelement()返回头部元素
booleanoffer(E e)尾部添加元素 不抛异常
Epeek()返回头部元素 为空返回null
Epoll()弹出头部元素 为空返回null
Eremove()弹出头部元素

4、LinkedList

(Java集合和c++容器的不同之处还是有点多啊,,,吐槽一下)
LinkedList类实现了Queue接口和Deque接口,用它来实现队列和双端队列

5、Set

set接口定义的集合类型,不包含重复元素,最多有一个null值

TreeSet

TreeSet底层用TreeMap实现,红黑树结构,常用的(增、删、查、遍历)方法如下:

返回值函数名功能
booleanadd(E e)添加元素
EpollFirst()返回并删除最小元素,set为空返回null
EpollLast()返回并删除最大元素,set为空返回null
booleanremove(E e)若存在该元素则删除
booleancontains(E e)查询元素 存在返回true
Eceiling(E e)查询元素 返回大于等于该元素的最小元素,若无return null
Efloor(E e)查询元素 返回小于等于该元素的最大元素,若无return null
Ehigher(E e)查询元素 返回严格大于该元素的最小元素,若无return null
Elower(E e)查询元素 返回严格小于该元素的最大元素,若无return null
Efirst()查询元素 返回树中最小元素
Elast()查询元素 返回树中最大元素
Iteratoriterator()返回迭代器 升序(即指向最小)
IteratordescendingIterator()返回迭代器 降序序(即指向最大)

ps:类的继承结构中NavigableSet继承于Set,扩展了 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法。方法 lower、floor、ceiling 和 higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回 null。

Iterator(只有删查功能)

该接口定义了几个抽象方法,迭代器是指向两个元素的中间,不指向元素

返回值方法名功能
booleanhasNext()iter之后还有元素,返回true
Enext()返回iter后一个元素,iter并向后滑动一个位置
voidremove()remove方法对next方法具有依赖性,必须先调用一次next(即先让iter越过要删除的元素,再remove回调删除该元素)

ListIterator(可以增删改查)

ListIterator接口 继承于 Iterator接口。新增一个add方法,用于在iter前插入元素。源码中有这样一段解释,‘The element is inserted immediately before the element that would be returned by {@link #next}, if any, and after the element that would be returned by {@link #previous}, if any’,刚开始没看懂,其实就是说插在前面,,,

返回值方法名功能
booleanadd(E e)在iter前插入元素
voidremove()与Iterator不同的是,remove方法依赖于next方法或者previous方法
voidset(E e)与remove方法一样,也依赖于next方法或这previous方法,新元素替换前一步iter跳过的元素

Vector和ArrayList的区别

简单区别是vector线程安全,开销比较大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值