Java集合框架详解(特容易上手)(上篇)

使用工具IntelliJ IDEA Community Edition 2023.1.4

使用语言Java8

本篇只负责讲一些Java集合框架基础内容,后面的详细内容在后面的篇章进行讲解,学集合的小妙招,看完代码直接自己敲一遍,绝对简单

目录

1.Java集合概述

1.1 Java中使用数组的缺陷

1.2 集合框架

1.2.1 Java集合框架主要内容

1.2.2 Java集合框架常用接口

1.3 Collection接口 

1.3.1 常用方法

1.3.2 案例

1.4 集合的遍历

1.4.1 使用Iterator(迭代器)接口遍历集合元素

1.4.2 使用增强for循环遍历集合元素

1.4.3 案例奉上 

1.4.4 集合遍历的超简单语法(敲完代码再看噢)

2. List


1.Java集合概述

1.1 Java中使用数组的缺陷

在Java中如果使用数组有较多缺陷,如:

  • 数组长度固定不变

数组一旦创建,长度就是固定不变的,为了能存储更多的信息,可以将数组长度定义为足够大,但是这样会浪费内存空间,不够灵活。所以当需要保存数量变化的一组数据时,数组就无能为力了。

  • 不便存储具有映射关系的数据

有时为了记录数据和查询方便,会对例如水果编号,形成与其品种具有映射关系的数据,例如,AP001——富士苹果,AP00——金帅苹果,PE00——果梨等,这样可以方便通过编号进行查询。这种数据看起来像两个数组,但是这两个数组的元素之间是有一定关联的,实现起来非常不方便。

  • 数据变更效率低下

数组在内存中被分配的是连续的存储控件,根据下标可以快速遍历信息列表,但是如果执行插入或删除操作,就会因频繁地进行数据移位操作而效率低下。

综上所述,数组在存储数据时,虽然具有其优势,但在特定场合下也存在着明显的不足,为了解决这些问题,Java提供了集合类,主要负责在不同应用场景下解决数据存储的问题,因此集合类类也被称为容器类。使用集合存储数据解决了数组长度固定的问题,并且它是高性能的,容易实现扩展和修改。 

1.2 集合框架

1.2.1 Java集合框架主要内容

Java集合框架提供了一套性能优良、使用方便的接口和类,它们都位于java.util包中,集合中的元素全部是对象,即Object类的实例,不同的集合类有不同的功能和特点,适合不同的场合。Java集合框架包含的主要内容如下所示:

Iterator(迭代器)

Iterator(这是用来遍历(取值)Collection集合的迭代器,在后面进行讲解,不过有一点点复杂,一般不使用这个,而是foreach循环或还有另一种可以直接用for循环的方式)

Collection接口

这个就是我们常用的集合接口,它有两个子接口,分别是List和Set,这两个我们都放在后面进行详解,前面会有一些简单的介绍(List是比较常用的);

List接口

List接口有两个实现类,分别是ArrayList和LinkedList,这两个我们放在后面进行细说;

Set接口

Set接口也有两个实现类,分别是HashSet和TreeSet,这两个我们也放在后面进行细说;

Map接口

Map接口也有两个实现类,分别是HashMap和TreeMap,这两个我们也放在后面进行细说;

  1. 如上只显示Java集合框架中常用的接口和类,省略了部分中间类。如有需要,可查询JDK1.8帮助文档。
  2. Map接口独立于Collection接口,但属于集合框架中的一部分
  3. 从以上内容可以看出,Java的集合类主要由两个接口派生而成:Collection接口和Map接口。Collection接口和Map接口是Java集合框架的根接口,这两个接口包括了一些子接口或实现类。其中,Collection接口常用的子接口包含List接口和Set接口;另外一个重要接口是Map接口,它是独立一支,以上三者都是集合接口,其实现类为Java中经常使用的集合类型。Java集合框架常用接口说明如下所示。此外,Java集合框架还包括相关的工具类(Iterator迭代器接口、Arrays类和Collections类)

1.2.2 Java集合框架常用接口

Collection 

  1. 单值集合的根接口,是最基本的集合接口。
  2. 一个Collection代表一组Object。Java不提供其实现类,只提供子接口(如List接口和Set接口)
  3. Collection接口存储一组可重复的无序对象

Set

  1. 继承Collection接口,存储一组不可重复的无序对象

List

  1. 继承Collection接口,存储一组可重复的有序对象
  2. 元素顺序以元素插入的次序来放置元素,不会重新排序
  3. 通过索引访问数组元素,索引从0开始
  4. List接口常用的实现类有ArrayList类和LinkedList类

Map

  1. 存储成对数据的根接口,可存储一组"键-值"对象。(就像身份证号对应名字一样,身份证号就是键,可以根据身份证号来找到对应的名字,名字就是值,名字可以重复有,但是身份证号没有重复的)
  2. 提供键(key)到值(value)的映射,Map中的键不要求有序,不允许重复。值同样不要求有序,但允许重复。
  3. 可以通过键找到对应的值。

Iterator

  1. 集合迭代器,能够遍历集合元素的接口。

Collections

  1. 与Collection是不同的概念,它提供了对集合对象进行基本操作的通用接口方法。
  2. 包含各种有关集合操作的静态方法。
  3. 是一个工具类,不能实例化。

在后面将使用接口名命名此接口的实现类组成的集合,例如,List集合为List接口所有实现类(ArrayList类和LinkedList类)组成的集合,同理,Set集合为Set接口的所有实现类组成的集合。 

1.3 Collection接口 

Collection接口是List接口、Set接口的父接口,该接口中定义的方法既可用于操作Set集合,也可用于操作List集合。Collection接口常用的方法如下:

1.3.1 常用方法

boolean add(Object o)
    用于向集合中添加一个元素,如果集合不允许重复且已包含了指定元素,则返回false;
boolean addAll(Collection c)
    将集合c里的所有元素添加到指定集合里,添加成功返回true;
void clear()
    清空集合中的所有元素,将集合长度变为0;
boolean contains(Object o)
    判断集合中是否包含指定元素;
boolean contaninsAll(Collection c)
    判断集合中是否包含集合c里所有的元素;
boolean remove(Object o)
    删除集合中的指定元素o,当集合中包含了一个或多个元素o时,这些元素将都被删除,删除成功返回true;
int size()
    返回集合里元素的个数(等于数组的长度);
boolean retainAll(Collection c)
    从集合中删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合和集合c的交集(就是只留下跟集合c中的集合重复的,其他的全部delete掉)),如果该操作改变了调用该方法的集合,则该方法返回true;
boolean removeAll(Collection c)
    从集合中删除集合c中的所有元素(相当于用调用该方法的集合减集合c),如果删除了一个或一个以上的元素,则该方法返回true;
boolean isEmpty()
    如果此集合中不包含任何元素,则该方法返回true;

1.3.2 案例

观察此案例就可理解Collection接口的常用方法是大概如何使用

打印结果

1.4 集合的遍历

当使用System.out.println()方法输出集合对象时,其将以[1,1,...]的形式输出,这是因为所有的Collection实现类都重写了toString()方法,该方法可以一次性地输出集合中的所有元素。但是,如果想依次访问集合里的每一个元素,并实现对该元素的操作,则需要使用某种方式遍历集合元素。下面将介绍两个方法。

1.4.1 使用Iterator(迭代器)接口遍历集合元素

Iterator接口也是Java集合框架的成员,但它与集合不一样。集合主要用于存储其他对象,而Iterator接口主要用于遍历(迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。

Iterator接口隐藏了各种Collection实现类的底层细节,向应用提供了遍历Collection集合元素的统一编程接口。Iterator接口定义了以下两个常用方法:

boolean hasNext()

  • 判断是否存在下一个遍历元素,存在则返回true

Object next()

  • 返回遍历的当前元素

若有一个Iterator对象,则必然有一个与之关联的Collection集合。没有集合的Iterator接口就像五本之木,无法发挥作用。

1.4.2 使用增强for循环遍历集合元素

除可以使用Iterator接口遍历Collection集合中的元素外,使用foreach循环遍历集合元素会更加便捷。foreach循环是JDK1.5引入的语法结构,也被称为增强for循环,可用于遍历集合和数组。其语法如下:

for(数据类型 type 迭代变量名 value:迭代对象 object){
  //引用迭代变量value的语句

1.4.3 案例奉上 

1.4.4 集合遍历的超简单语法(敲完代码再看噢)

不管使用Iterator迭代器遍历集合还是foreach遍历集合,只要记得一个口令,循,存,转,调就行了;

2. List

请敬请期待!!!

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值