Java集合

目录

集合的概述

一、Collection接口

二、List接口

ArrayList

 LinkedList 


集合的概述

        Java 集合框架中的集合包括各种数据结构和容器,用于存储和操作数据。集合框架提供了各种方法来操作和管理集合,例如添加、删除、查找、排序、遍历等。

        java集合框架中的Java 集合可以按照不同的维度进行分类,可以基于数据结构和映射的来分类集合。

其中一种常见的分类方式是:基本集合和高级集合。

基本集合包括:

  • List:有序集合,可以包含重复元素。常用实现类有ArrayList和LinkedList。
  • Set:无序集合,不包含重复元素。常用实现类有HashSet和TreeSet。
  • Queue:队列,先进先出的顺序。常用实现类有LinkedList和PriorityQueue。

高级集合包括:

  • Map:键值对的集合,每个元素都有一个唯一的键。常用实现类有HashMap和TreeMap。
  • Stack:栈,后进先出的顺序。
  • Deque:双端队列,既可以从头部插入和删除元素,也可以从尾部插入和删除元素。常用实现类有LinkedList和ArrayDeque。

一、Collection接口

        Collection是Java 集合框架的根接口之一,提供了集合的基本操作,如添加、删除、迭代等。

// 1、添加元素
boolean add(E e)    // 添加元素 e 到集合中

// 2、删除元素
boolean remove(Object o)    // 从集合中移除指定的元素 o

// 3、检查集合
boolean contains(Object o): // 检查集合中是否包含指定的元素 o
boolean isEmpty()            //检查集合是否为空。

// 4、集合大小
int size()    // 返回集合中的元素数量

// 5、清空集合
void clear()    // 移除集合中的所有元素

// 6、遍历集合
Iterator<E> iterator()    // 返回集合的迭代器,用于遍历集合中的元素

// 7、转换为数组
Object[] toArray()        // 将集合转换为数组
<T> T[] toArray(T[] a)    // 将集合转换为指定类型的数组

// 8、批量操作
boolean addAll(Collection<? extends E> c)  // 将指定集合 c 中的所有元素添加到当前集合中
boolean removeAll(Collection<?> c)         // 从当前集合中移除指定集合 c 中的所有元素
boolean retainAll(Collection<?> c)         // 保留当前集合中与指定集合 c 相同的元素,移除其他元素

这些方法提供了对集合中元素的基本操作,适用于各种实现 Collection 接口的集合类。

二、List接口

        List集合包括List接口以及List接口的所有实现类。List接口继承 Collection 接口,因此包含Collection接口中的所有方法。

         List接口的常用实现类有 ArrayLis t类和 LinkedList 类。

List集合特点:

  •  有序性:元素按插入顺序排列,可以通过索引访问。
  • 可重复性:可以包含重复的元素。
  • 支持索引操作:通过索引可以快速访问和修改元素。

1、ArrayList

        ArrayList 基于动态数组,具有高效的随机访问能力。同时提供动态调整大小和快速随机访问的特性,但在插入和删除操作上可能较慢,因为需要移动数组中的元素。

创建ArrayList类:

// 通过List实例化
List<E> list = new ArrayList();

// 基本声明
ArrayList<E> list = new ArrayList<>(); // E是存储元素的数据类型
// java7 及以上版本,可以省略后面的泛型参数
ArrayList<E> list = new ArrayList();

// 声明并初始化
// initialCapacity 是初始容量,指定 ArrayList 可以容纳多少元素
ArrayList<E> list = new ArrayList(initialCapacity);

// 声明并使用已有集合初始化
// collection 是一个 Collection 类型的对象
ArrayList<E> list = new ArrayList(collection);

 2、LinkedList 

       LinkedList 使用链表结构保存数据。在链表中,每个元素(节点)包含数据和指向下一个节点的指针。通过这种方式,LinkedList 能够动态地分配和管理内存,支持高效的插入和删除操作。向集合插入或删除元素时,LinkedList 集合效率较高;而随机访问集合中的元素,LinkedList 集合效率较低。每个节点的存储位置不是固定的,因此它们在内存中的位置是非连续的。

        LinkedList 类实现了 List 接口,因此它继承了这些接口的所有标准方法。此外,LinkedList 还提供了一些特有的方法,这些方法不是 List 接口的一部分,而是 LinkedList 类本身提供的。

// 添加元素
void addFirst(E e)   // 将元素添加到集合的开头
void addLast(E e)    // 将元素添加到集合的末尾

// 获取元素
E getFirst()     // 返回集合的第一个元素
E gerLast()      // 返回集合的最后一个元素

// 删除元素
E removeFirst()   // 删除并返回集合的第一个元素
E removeLast()    // 删除并返回集合的最后一个元素

E peekFirst()  // 获取集合的第一个元素,但不移除它(如果集合为空,返回 null)

E peekLast()   // 获取集合的最后一个元素,但不移除它(如果集合为空,返回 null)

E pollFirst()  // 获取并移除集合的第一个元素(如果集合为空,返回 null)

E pollLast()   // 获取并移除集合的最后一个元素(如果集合为空,返回 null)

三、Set接口 

       

        Set集合包括Set接口及其所有实现类。Set接口继承自Collection接口,因此包含Collection接口中的所有方法。

Set集合的常用实现类有 HashSet 类、LinkedHashSet 类和 TreeSet 类。

Set集合特点:

  • 无序性:元素没有特定的顺序,无法按插入顺序访问,除非使用 LinkedHashSetTreeSet
  • 不允许重复:Set集合不允许包含重复的元素,每个元素在集合中只能出现一次。
  • 不支持索引操作:不能通过索引访问元素,需要通过迭代器进行遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值