集合(持续更新)

👌 棒棒有言:追逐梦想的过程就像是一个人在走一条黑暗、幽深而又漫长的隧道,多少次跌倒又爬起,经历了多少个暗无天日的黑夜与白天。一路上沉淀着难以计数的汗水与泪水,不断地自我暗示:只要自己坚持,只要勇敢地一向往前走,就必须能找到出口,必须会看到光明。

👌 本章简介:在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。

👍  作者:get棒棒给个关注呗

👍  重要:请给个关注哦!

目录

一.认识集合

二.list接口

1、 使用ArrayList类动态存储数据

2、 使用LinkedList类动态存储数据

Set接口

1、 Set接口概述

2、 使用HashSet类动态存储数据


一.认识集合

(1)开发应用程序时,如果想存储多个同类型的数据,可以使用数组来实现;但是使用数组存在

如下一些明显缺陷:

-->数组长度固定,不能很好地适应元素数量动态变化的情况。

-->可通过数组名.length获取数组的长度,却无法直接获取数组中实际存储的元素个数。

-->数组采用在内存中分配连续空间的存储方式存储,根据元素信息查找时效率比较低,需要多次

比较。

(2)从以上分析可以看出数组在处理一些问题时存在明显的缺陷,针对数组的缺陷,Java提供了

比数组更灵活、更实用

的集合框架,可大大提高软件的开发效率,并且不同的集合可适用于不同应用场合。

(3)Java集合框架提供了一套性能优良、使用方便的接口和类,它们都位于java.util包中,其主要

内容及彼此之间的关系如下图所示。

 (4)从上图可以看出,Java的集合类主要由Map接口和Collection接口派生而来,其中Collection

接口有两个常用的子接口,即List接口和Set接口,所以通常说Java集合框架由3大类接口组成

(Map接口、List接口和Set接口)。

二.list接口

(1)Collection接口是最基本的集合接口,可以存储一组不唯一、无序的对象。

(2)List接口继承自Collection接口,是有序集合。用户可以使用索引(下标)访问List接口中的元

素,类似于数组。

(3)List接口中允许存放重复元素,也就是说List可以存放一组不唯一、有序的对象。

(4)List接口常用的实现类有ArrayList和LinkedList。

1、 使用ArrayList类动态存储数据

(1)针对数组的一些缺陷,Java集合框架提供了ArrayList集合类,对数组进行了封装,实现了长

度可变的数组,而且和数组采用相同的存储方式,在内存中分配连续的空间,如下图所示,所以,

经常说ArrayList为动态数组。但是它不等同于数组,ArrayList集合中可以添加任何类型的数据,并

且添加的数据都将转换成Object类型,而在数组中只能添加同一类型的数据。

(2)ArrayList类提供了很多方法用于操作数据,下表列出的是ArrayList类的常用方法。 

 (3)ArrayList集合因为可以使用索引来直接获取元素,所以其优点是遍历元素和随机访问元素的

效率比较高。但是由于ArrayList集合采用了和数组相同的存储方式,在内存中分配连续的空间,因

此在添加和删除非尾部元素时会导致后面所有元素的移动,这就造成在插入元素、删除元素等操作

频繁的应用场景下使用ArrayList会导致性能低下。所以数据操作频繁时,最好使用LinkedList存储

数据。

2、 使用LinkedList类动态存储数据

(1)LinkedList类是List接口的链接列表实现类。它支持实现所有List接口可选的的列表的操作,

并且允许元素值是任何数据,包括null。

(2)LinkedList类采用链表存储方式存储数据,如下图所示,优点在于插入、删除元素时效率比较

高,但是LinkedList类的查找效率很低。

(3)它除了包含ArrayList类所包含的方法之外,还提供了下表所示的一些方法,可以在LinkedList

类的首部或尾部 进行插入、删除操作。

  (4)除了LinkedList类中特有的方法外,LinkedList类和ArrayList类所包含的大部分方法是完全一

样的,这主要是因为它们都是List接口的实现类。由于ArrayList采用和数组一样的连续的顺序存储

方式,当对数据频繁检索时效率较高而LinkedList类采用链表存储方式,当对数据添加、删除或修

改比较多时,建议选择LinkedList类存储数据。

Set接口

1、 Set接口概述

(1)Set接口是Collection接口的另外一个常用子接口,Set接口描述的是一种比较简单的集合。

(2)集合中的对象并不按特定的方式排序,并且不能保存重复的对象,也就是说Set接口可以存储

一组唯一、无序的对象。

(3)Set接口常用的实现类有HashSet。

2、 使用HashSet类动态存储数据

(1)HashSet集合的特点如下:

-->集合内的元素是无序排列的。

-->HashSet类是非线程安全的。

-->允许集合元素值为null。

(2)HashSet类的常用方法如下所示:

(3)List接口可以使用for循环、增强for循环、迭代器(Iterator接口)三种方式遍历。使用for循环

遍历时,通过get()方法取出每个对象,但HashSet类不存在get()方法,所以Set接口无法使用普通

for循环遍历。

(4)Set接口可以使用增强for循环、迭代器(Iterator接口)两种方式遍历。
 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

get棒棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值