【Java学习笔记】:集合框架
  GhjOcgnllpvU 2023年11月02日 35 0

1、写在前面

大家好,今天文章的内容是:

  • 集合框架

2、集合框架

2.1、简述

什么是集合框架?

在数学中,集合一般被定义为:由一个或多个确定的元素所构成的整体。而在Java中,集合就是可以将多个对象收集到一起,并作为一个对象而存储的容器。

由于集合框架的设计必须是高性能的,允许不同类型的集合存在,并且扩展性高的。因此Java使用了标准接口来设计集合框架,我们可以直接使用这些接口的标准实现,也可以通过接口来实现自己的集合类。

总的来说,Java集合框架提供了若干现成的数据结构以及算法,便于我们使用。也就是说,集合框架属于一套统一的体系结构,具体内容包括集合接口、接口的实现以及一系列操作集合的算法。

备注:

  • 集合接口:具有层次结构的抽象数据类型(ADT),它将操作和表示分离开。之所以定义多个接口,是为了以不同的方式操作集合对象
  • 集合实现:指的是集合接口的具体实现,属于可重用的数据结构。
  • 算法:对集合中的元素进行若干操作的对应算法,如排序、查找等。

另外,从Java5开始,集合框架就已经全部采用泛型实现了。而上述我们提到的集合接口以及类都是在java.util包中。


2.2、常用接口

(1)介绍

具体来说,Java集合框架中的常用接口包括:

  • Collection:存储若干数据元素的集合。
  • Map:存储有映射关系元素的集合。

其中Collection又包含了三种常用的子接口:ListSet以及Queue


(2)主要接口

Collection接口

Collection是最基本的集合接口,用于存储一组不唯一,无序的对象。

注意:

  1. Java不提供直接继承自Collection的类,只提供继承于Collection的子接口,比如Listset等。
  2. Collection声明时一个使用泛型,比如Collection<T>

Set接口

Set接口扩展了Collection接口,并且禁止重复的元素。也就是说,Set不保存重复的元素,是一个不包含重复元素的集合。

注意:

  1. 实现Set接口的两个主要类是HashSetTreeSet
  2. Set接口在声明时也应该使用泛型,即Set<T>
  3. 有一种特殊的Set接口是SortedSet接口,其中的元素是有序排列的,并且增加了与次序相关的操作。实现SortedSet接口的主要类是TreeSetSortedSet接口在声明时也是一样使用泛型,即SortedSet<T>

List接口

List接口是一个有序集合,其中的数据元素是按照有序排列的,并且可以重复。使用该接口能够准确控制数据元素的位置,List中的每个元素都有一个索引值,从零开始,用于表示元素在List中的位置。我们可以通过索引值来访问List中的元素。

注意:

  1. 实现List接口的两个主要类是ArrayListLinkedList
  2. List接口在声明时应使用泛型,即List<T>

Queue接口

Queue接口也是一类比较经典的集合,是Java提供的队列实现。队列中的元素按照先进先出的规则进行存取,即新元素在队尾添加,并且只能从队列的头部进行移除元素。Queue接口在声明时应使用泛型,即Queue<T>


Deque接口

Deque接口继承自Queue接口,是一个双向队列,它支持从队列的头、尾两端对数据元素进行插入、移除等操作。Deque接口的这种双向特性使得它可以作为栈集合(先进后出)来使用。Deque接口在声明时应使用泛型,即Deque<T>


Map接口

Map接口是一个映射表集合,其存储的每个元素都是一对,以键值对(key➡value)的形式保存。Map中不能有重复的关键字,并且每个关键字最多只能映射到一个值。当我们需要通过关键字来实现对值的快速存取,那么最好的选择是Map

备注:

  • Map接口在声明时应使用泛型,即Map<K, T>。其中K表示关键字,T表示Map中元素的数据类型。
  • 另外,SortedMap接口是一种特殊的Map接口,继承于Map,使Key保持在升序排列。
  • SortedMap接口在声明时应使用泛型,即SortedMap<K, T>。其中K表示关键字,T表示Map中元素的数据类型。

2.3、常用类

常用类

说明

ArrayList

该类是实现了List接口的具体类,可存储任意类型的对象,其容量可根据需要自动扩充,在随机访问和遍历元素时效率较高

LinkedList

该类通过双向链表数据结构实现了ListDeque接口,应用场景较为广泛。可将该类当做栈或者队列来使用,但查找效率较低

HsahMap

该类实现了Map接口,按照键的HashCode值来存储键对象,访问速度较快,不支持线程同步。

HashSet

该类是Set接口的典型实现,是无序且无重复元素的集合,其底层使用HashMap来保存所有元素,查询速度较快,但注意,HashSet不是线程安全的

TreeSet

该类实现了Set接口,实现了有序的Set

ArrayDueue

是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素

TreeMap

继承了AbstractMap,使用了一棵树,可对键对象进行排序


3、写在最后

好了,文章的内容就到这里,感谢观看。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  lh6O4DgR0ZQ8   2023年11月02日   53   0   0 javaListjson
  ZXL8ALkrtBPG   2023年11月02日   67   0   0 Listcpp
  X5zJxoD00Cah   2023年11月02日   47   0   0 javaList函数返回