普歌+浅谈Java中Collection集合(1)

了解Collection集合的结构

Collection是一个接口,是java中单列集合。在Java语言开发中有着很重要的地位。

  • Collection集合结构

Collection接口下有着List接口和Set接口两大类。

在这里插入图片描述
Collection接口中有很多的实现类,这些不同的实现类,使我们在面对不同的问题和算法时,可以以和很快的效率去解决问题,找到问题的最优解!

Collection集合中常用的共性方法

boolean add(E e)向集合中添加元素
bollean remove(E e)删除集合中的某个元素
void clear()清空集合中的所有元素
boolean contains(E e)判断集合是否包含某个元素
boolean isEmpty()判断集合是否为空
int size()获取集合的长度
Object[] toArray()将集合转换为一个数组
  • 常用的方法就是上述表格中的,还有一部分是重写过的方法,有很多种类,在这里就不每个列举了!

List集合

List集合的特点:

  • 是一个有序的集合。(有序:存储和取出的元素顺序一样)
  • 有索引
  • 允许存储重复元素

List集合中常用方法:

void add(int index,E element)在指定位置插入元素
E get(int index)返回列表中指定的元素
E remove(int index)移除列表中指定的元素
E set(int index,E element)替换指定位置的元素

数据结构的拓展

我们要想深入的了解集合中的存储结构,就必须去了解几种常见的数据结构。

  • 栈:先进先出
  • 队列:先进先出
  • 数组:
    查询快:数组的地址值是连续的,我们通过数组的首地址找到数组,通过数组的索引可以快速的查找到指定元素。
    增删慢:数组的长度是固定的,我们要删除一个元素,需要新建一个数组,把原数组的元素复制过来。在堆内存中,我们频繁的创建数组,复制元素,销毁数组,效率很低。
  • 链表:
    查询慢:链表的地址是不连续的,每次查询的时候,都需要从首地址开始
    增删快:链表结构,增加/删除一个元素,对整体结构没有影响。所以增删快
    【注】:链表中一个元素—一个节点。 节点有三部分:数据、前节点的地址、后节点的地址
    *单向链表:链表中只有一条链子,不能保证元素的顺序(存储和取出的顺序相同)
    *双向链表:链表中有两条链子,有一条专门记录元素的顺序。所以是一个有序的集合
  • 红黑树:
    特点:趋近于平衡树,查询的速度非常快,查询叶子节点最大次数和最小次数不能超过两倍

ArrayList集合

知道了常用的几种数据结构后,就可以去探索集合的底层存储结构。

ArrayLsit集合的底层存储结构是数组
具有查询快、增删慢的特点。


LinkedList集合

LinkedList集合的底层存储结构是链表。
具有查询慢、增删快的特点。

常用的方法

LinkedList集合包含着许多特有的方法,这些方法便于我们操作列表中的首尾元素。

  • 【注意】:LinkedList集合中特有的方法,不能使用多态进行集合的创建,否则会无法调用集合中特有的方法。
void addFirst(E e)将指定元素插入到列表的开头
void addLast(E e)将指定元素插入到列表的结尾
void push(E e)将指定元素推入到集合所表示的栈堆
E getFirst()返回集合的第一个元素
E getLast()返回集合的最后一个元素
E removeFirst()移除集合中的第一个元素
E removeLast()移除集合中的最后一个元素
E pop()从集合表示的栈堆中弹出一个元素

Vector集合

Vector集合现在已经被ArrayList集合所替代,这里我们就是简单的了解一下。

  • Vector内部实现类似于ArrayList集合,其底层也是一个容量能够动态增长的数组,是jdk1.0添加的类。它的很多实现方法都加入了同步语句,因此线程安全。
  • (但Vector也只是相对线程安全,有时候还是需要加入同步语句来保证线程的安全)

多谢大家的查阅!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值