java集合框架(一)

168 阅读3分钟
引入

在开发过程中我们难免要对数据进行存储,这时我们可以考虑的容器有数组和集合,这就需要我们区别二者的功能,选择合适的容器。

数组在储存数据方面的特点:

1)数组一旦初始化,其长度就是确定的。

2)数组一旦初始化完成,其元素类型就是确定的,不是此类型的元素不能添加到数组中。

3)数组的元素类型既可以是基本数据类型也可以是引用数据类型。

数组的缺点

1)数组中储存数据具有单一性的特点,对于无序的,不可重复的场景的多个数据就无能为力了。

2)数组中可用的方法,属性都极少。具体的需求都需要自己组织代码的相关逻辑。

3)针对于数组中元素的删除,插入操作,性能较差。

java中集合框架的体系

java中有两个根接口Collection和Map,由这两个接口派生出来了许多接口,不同的接口都有着自己的有特点

这里主要介绍一些较为常用的接口:分别是由Collection派生出来的List接口和Map接口;

List集合框架

List接口的实现类有ArrayList以及其子类LinkedList,Vector

ArrayList容器的使用

image.png

说明:

ArrayList是一个动态数组,也是我们最常用的集合,是List类的典型实现。它允许任何符合规则的元素插入甚至包括null,每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。

随着容器中的元素不断增加,容器的大小也会随着增加,在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。

LinkedList与ArrayList的功能相同,但在执行不同的操作时二者的性能不同,ArrayList底层使用的是Object数组,而LinkedList使用的是双向链表这就使得LinkedList在插入和删除操作时有很好的性能,相对的其在查找元素时性能就较差。对于ArrayList来说,由于其底层使用的是Object数组,而数组的一大特点就是有索引【index】使得ArrayList在进行查找时性能相对较好,而在插入和删除方面性能较差。

Vector是一个较为古老的实现类,其与ArrayList相比性能较差但是其线程是安全的,而ArrayList线程不安全的。

总结:

1)ArrayList

优点:底层结构是数组,查询快,效率高。

缺点:线程不安全,增删慢。

2)Vector

古老的List实现类

优点:底层结构是数组,查询快,效率高。

缺点:线程不安全,增删慢。

3)LinkedList

优点:底层数据结构是双向链表,增删快,效率高;

缺点:线程不安全,查询慢;

拓展【List类中的方法及介绍】

image.png

返回容器的元素个数;

image.png

判断容器是否为空;

image.png

判断容器是否包含某个元素;

image.png

用于创建迭代器的实现类的对象

image.png

用于将容器转换为数组;

image.png

用于增删容器中的元素

image.png

清空容器中的元素

image.png

在指定的索引处修改或者增加元素