Collection集合,看着看着就会了

在Java中,有一个叫集合的家伙,它是用来存储数据的。集合不是一个具体的接口和类,而是一组接口和实现类。

本文主要讲述的是Collection接口以及该接口下的实现类。

先来看一下Collection的框架体系结构:
在这里插入图片描述
不难看出,Collection接口有两个儿子,五个儿子的儿子。

一、Collection接口

Collection接口的定义:

public interface Collection<E> extends Iterable<E>

该接口支持泛型,继承了Iterable接口,说明了我们可以使用加强for循环来遍历集合中的元素对象。

Collection是一个用于存储数据容器,既然是容器,那么基本上都会具备增删改查的功能。

Collection接口的常用方法:

返回值类型 方法 功能描述
boolean add(E e) 向集合中添加一个元素
int size() 返回集合中的元素个数
boolean remove(Object o) 删除集合中的一个对象
void clear() 删除集合中的全部对象

二、List接口

List接口用于存储一组有序不唯一的元素对象。

List接口的定义:

public interface List<E> extends Collection<E>

List接口继承Collection接口,也支持泛型。

List接口的常用方法:

返回值类型 方法 功能描述
void add(int index,E element) 添加一个元素到指定位置
E remove(int index) 删除指定位置上的元素
E set(int index,E element) 用指定的元素替换集合中指定位置上的元素
E get(int index) 获取指定位置上的元素

三、List接口的实现类

1、ArrayList类

ArrayList类底层采用的数据结构是数组,允许添加重复的元素,添加的元素是有序的。

线程不同步,在多线程同时访问时,可以提高访问的效率,但会降低访问的安全性。

优点: 遍历元素和随机访问元素的效率比较高

缺点: 添加、删除元素的效率比较低(添加或删除元素需要前后移动元素的位置)

2、Vector类

Vector类底层采用的数据结构是数组,允许添加重复的元素,添加的元素是有序的。

线程同步,当多线程同时访问时,会降低访问的效率,但会提高访问的安全性。

Vector类的底层原理是数组,所以优缺点和ArrayList类是一样的。

3、LinkedList类

LinkedList类底层采用的数据结构是链表,存储的元素可以重复,而且是按添加顺序进行存储的。

优点: 插入和删除元素的效率比较高。

LinkedList类的常用方法:

返回值类型 方法 功能描述
void addFirst(E e) 在列表的开头插入指定元素
void addLast(E e) 在列表的末尾插入指定元素
E getLast() 获取列表的最后一个元素
E getFirst() 获取列表的第一个元素
E removeFirst() 删除列表的第一个元素
E removeLast() 删除列表的最后一个元素

四、Set接口

Set接口用于存储一组唯一的元素对象。

Set接口的定义:

public interface Set<E> extends Collection<E>

Set接口继承Collection接口,也支持泛型。所以Collection接口中的方法Set接口都能用。

五、Set接口的实现类

1、HashSet类

HashSet类存储的对象是无序唯一的,底层数据结构采用的是散列表

HashSet类的定义:

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

HashSet类实现了Set接口,Set接口又继承继承Collection接口,所以Collection接口中的方法HashSet可以直接用。

2、TreeSet类

TreeSet类存储的对象是有序唯一的,底层数据结构是红黑树

优点: 按照升序排序,查询速度比List快
缺点: 按照内容查询,查询速度没有HashSet快

TreeSet类的定义:

public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable

因为Set接口没有拓展自己的独立方法,所以Collection接口的方法TreeSet都适用。

六、总结

以上是我分享给大家的关于Collection集合的一些总结。如果觉得还不错的话,就送我一个赞吧!如果本文对你有用的话,也欢迎收藏哦!

猜你喜欢

转载自blog.csdn.net/m0_47890251/article/details/107694365