Java 集合:(一)集合框架概述

Java 集合:(一)集合框架概述

一、集合框架概述

1、为什么要使用集合?

一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。

另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。

不管是哪一种数据结构,其实本质上都是容器来着,就是用来装对象的。因此,我们就要搞清楚两点:(1)如何存储(2)存储特点

2、数组

(1)数组结构

逻辑结构:线性的

物理结构:顺序的存储结构

申请内存:一次申请一大段连续的空间,一旦申请到了,内存就固定了

存储特点:所有数据存储在这个连续的空间中,数组中的每一个元素都是一个具体的数据(或对象),所有数据都紧密排布,不能有间隔。

(2)如图所示:

(3)常用操作

a、查询:每一个元素都有一个数值下标,可以通过下标瞬间定位到某个元素

b、增加:

先使用 total 变量辅助记录实际存储元素个数

从尾部增加:数组名[total++]=新元素

从其他位置插入:先把index位置开始所有元素后移,然后数组名[index]=新元素

c、删除:先把index后面的元素前移,然后数组名[total--]=null

d、修改: 直接数组名[index]=新元素

(4)优缺点:

优点:按索引查询效率高

缺点:添加/删除效率低,因为都涉及到移动元素;无法直接获取有效元素的个数,需要total来辅助

如图所示:

3、数组和集合对比

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

① 数组初始化以后,长度就确定了。

② 数组声明的类型,就决定了进行元素初始化时的类型

数组在存储数据方面的弊端:

① 数组初始化以后,长度就不可变了,不便于扩展

② 数组中提供的属性和方法少,不便于进行添加、删除、插入等操作,且效率不高。

同时无法直接获取存储元素的个数

③ 数组存储的数据是有序的、可以重复的。---->存储数据的特点单一

④ 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率不高

⑤ 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致。

Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。

二、集合的使用场景

1、使用场景

三、集合框架

1、集合框架

为了可以满足用户数据更多种的逻辑关系,而设计的一系列的不同于数组的可变的聚合的抽象数据类型。这些接口和类在java.util包中,因为类型很丰富,因此我们通常称为集合框架集。

2、分类

Java 集合可分为 Collection 和 Map 两种体系

Collection接口:单列数据,定义了存取一组对象的方法的集合

List:元素有序、可重复的集合

Set:元素无序、不可重复的集合

Map接口:双列数据,保存具有映射关系“key-value对”的集合

Collection 接口继承树:

Map 接口继承树:

3、集合系列框架

四、结构说明

1、Collection接口:层次结构中的根接口。Collection 表示一组对象,这些对象也称为 Collection 的元素。一些 Collection 允许有重复的元素,而另一些则不允许。一些 Collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List、Queue)实现。此接口通常用来传递 Collection,并在需要最大普遍性的地方操作这些 Collection。

(1)List:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

(2)Queue:队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。

(3)Set:一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

SortedSet 进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。

2、Map接口:将键映射到值(key,value)的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

SortedMap接口:进一步提供关于键的总体排序 的 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的 Comparator 进行排序。

五、

🎎 相关推荐

阴阳师妖刀姬皮肤副本详细打法策略解析
🎯 你们的365还进得去吗

阴阳师妖刀姬皮肤副本详细打法策略解析

📅 08-04 👀 3133
8个正规网上赚钱平台,用心做日入500+,也不是不可以!
🎯 你们的365还进得去吗

8个正规网上赚钱平台,用心做日入500+,也不是不可以!

📅 08-03 👀 4370
多少分可以上清华北大?附最低分数线2024年参考
🎯 你们的365还进得去吗

多少分可以上清华北大?附最低分数线2024年参考

📅 07-03 👀 6574