关于集合Collection

集合框架请添加图片描述

概念:

1.Collection是所有集合的顶级接口

2.集合和数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便

3.Collection 下面有多种实现类,因此我们有更多的数据结构可以选择

Collection 的方法 1(单个集合)

通过向上造型,创建了一个集合 “c”,此处以实现类ArrayList为例
在这里插入图片描述
此时输出集合"c"
在这里插入图片描述
输出结果是一个空集合
在这里插入图片描述

1.boolean add(E e)

向当前集合的末尾添加一个元素,成功添加返回true,否则返回false在这里插入图片描述
当调用add()方法向集合中添加元素时,结果为ture,再次输出集合时,原本为空的集合中有了内容"abc"

在这里插入图片描述
在这里插入图片描述

2.int size()

返回当前集合的元素个数在这里插入图片描述
当调用size()方法并打印时,可以得到集合的大小在这里插入图片描述
在这里插入图片描述

3.boolean isEmpty()

判断当前集合是否为空,为空时返回ture,反之返回false
在这里插入图片描述
此时集合中一个元素’abc’所以集合不为空
在这里插入图片描述

4. void clear()

清空当前集合
在这里插入图片描述
当调用clear()方法时会清空当前集合,不需要接收,此时再次输出集合是否为空时,输出结果变为ture

在这里插入图片描述

5. boolean contains(Object o)

判断当前集合中是否包含给定元素,判断依据是看给定元素是否存在与集合元算equals比较结果为true的情况,存在则认为包含
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.boolean remove(Object o)

从集合中删除给定的元素,也是删除与集合中equals比较为true的元素,如果集合中存在多个重复元素,仅删除第一个
在这里插入图片描述
调用remove()方法,如果删除成功返回ture,反之则返回false,此时集合中只有一个"abc"元素,所以第一次调用时返回ture,第二次返回false
在这里插入图片描述
在这里插入图片描述

Collection 的方法 2 (集合间)

此时准备了两个集合并在其中添加元素
在这里插入图片描述

7.boolean addAll(Collection<?extends E>c)

在这里插入图片描述
将给定集合中的所有元素添加到当前集合中,当前集合 发生了改变返回true

1.此时先输出一次集合c,查看了集合c中原有的元素.
2.使用集合c 对象 调用 addAll()方法,将集合c2添加到集合c 中,打印结果为ture,说明添加成功.
3.再次打印集合c.可以发现集合c中涵盖了集合c2与c的所有元素
在这里插入图片描述
在这里插入图片描述

8. boolean containsAll(Collection<?> c)

在这里插入图片描述
判断当前集合是否包含给定集合中的所有元素

此时集合c2中与集合c中有一个元素并不相同,所以输出的结果为false在这里插入图片描述

9.boolean removeAll(Collection<?> c)

在这里插入图片描述
删除当前集合中与给定集合的共有元素

删除了集合c与集合c2共有的元素"abc"与"ab"在这里插入图片描述
在这里插入图片描述

10.集合与数组的转换

1. 将当前集合转换为一个Object类型的数组

在这里插入图片描述
在这里插入图片描述

2.将当前集合转换为指定参数类型的数组

在这里插入图片描述
将当前集合转换为指定参数类型的数组,该方法要求传入一个数组.
如果该数组可用(数组长度>=集合的size)时,会将当前集合元素直接存入到该数组中,然后将数组返回,
如果数组不可用,会创建一个与参数数组同类型并且长度与集合size一致的数组,再将元素存入到数组后返回.
在这里插入图片描述

Collections工具类提供的方法

1.加锁

我们常用的集合实现类:ArrayList,LinkedList,HashSet都是线程不安全的,因此多线程情况下不应当操作他们.
集合的工具类:java.util.Collections 提供了一组静态方法,可以将现有的集合转化为一个并发安全的集合在这里插入图片描述
变成线程并发安全的集合,有返回值 并用原集合接收在这里插入图片描述

2.翻转

提供了一个方法用于翻转List集合的元素
***注意:***只能用于list集合在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集合的遍历

iterator 迭代器

Collection 提供了一个方法 :Iterator iterator()在这里插入图片描述
迭代器接口中规定了遍历集合元素所需要的相关方法,使用迭代器遍历需要遵循的原则为:问,取,删,其中删除元素不会遍历过程中的必要操作.

问 boolean hasNext()

判断集合中是否还有元素可以迭代,有返回true,没有返回false在这里插入图片描述

这里通过集合c的对象调用iterator()方法,返回了一个迭代器并接收,通过迭代器i调用hasNext()方法,作为循环条件,当有下一个元素时继续遍历,没有下一个元素时,循环终止,通过"问",对集合进行遍历在这里插入图片描述

取 E next()

获取集合下一个元素(第一次调用时是获取下一个元素,以此类推)在这里插入图片描述
这里通过迭代器i去调用next()方法,读取集合中的元素,每调用一次获取下一个元素在这里插入图片描述
在这里插入图片描述

删 void remove()

用迭代器提供的remove方法,对当前遍历到的元素进行删除在这里插入图片描述
在这里插入图片描述
这里"abc"被删除掉了
在这里插入图片描述
注意:
当使用迭代器对集合进行遍历时,使用集合提供的remove()方法会出现报错在这里插入图片描述
在这里插入图片描述

新循环

1.JDK5之后推出了一个特性:增强型for循环,也称为新循环,使得我们可以使用相同的语法遍历集合或数组
2. 新循环也是语法糖,编译器在编译源代码时如果发现使用新循环遍历数组,会将代码改为普通的for循环进行.
***注意:***使用新循环遍历集合会被编译器改为迭代器遍历.因此,使用新循环遍历的过程中,仍然不能通过集合的方法增删元素

语法: for(元素类型 元素名:集合或数组){ 循环体 }
在这里插入图片描述
在这里插入图片描述

lambda表达式

JDK8 之后,集合提供了一个新方法 可以使用lambda表达式遍历集合元素,运行时讲集合的每个元素都顺序传递给lambda表达式中的变量,并执行一次表达式.方法内部是使用新循环实现的
在这里插入图片描述

在这里插入图片描述

泛型

1.泛型也称为参数化类型,允许我们在使用一个类或接口时,通过其定义的泛型来指定其属性,方法的参数或返回值的类型等
2.泛型的类型必须是引用类型,有泛型支持的类或接口在使用时若不确定具体的泛型类型,则默认为原型的Object
3.迭代器接口也支持泛型
泛型属于语法糖,编译器在编译时会根据泛型指定的类型补全造型的代码
在这里插入图片描述

Collecion 的两个常见接口

1.java.util.List

List继承自Collection,是集合中常用的一个子类型
特点:可以存放重复元素 且有序,并提供了一套通过下标操作元素的方法
(重复元素的判定是依靠元素自身的equals方法比较的结果而定,为true就认为是重复元素.)

List 提供的方法

1.void add(int index,E element)

将元素添加到指定下标,后续元素相继后移.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.E remove(int index)

将指定下标元素删除,返回删除掉的元素
在这里插入图片描述
在这里插入图片描述

3. E get(int index)

获取指定下标的元素并返回
在这里插入图片描述
在这里插入图片描述

4.E set(int index,E element)

将给定元素设置到指定位置,并返回原有元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将数组转换为集合

List asList(T… a)

数组工具类 Arrays 提供了一个静态方法 可以将一个数组转换为一个List集合
在这里插入图片描述
此处准备了一个数组array,通过调用asList()方法将数组转换并用一个集合接收在这里插入图片描述
在这里插入图片描述
***注意:***通过数组转换而来的集合,对该集合的操作就是对源数组的操作(我认为是因为集合没有通过new去开辟新空间,而是通过赋值的方式得到了数组的对象)
由于数组是定长的,因此从数组转换而来的集合不可以调用增删元素等会影响数组长度的操作,否则会抛出异常
如果向向集合中增删元素,需要自行创建一个集合,然后将原集合的元素导入到该集合中即可.
所有的集合都支持一个参数类型为Collection的构造方法,作用是在创建当前集合的同时包含给定集合中的所有元素
在这里插入图片描述
在这里插入图片描述

List常见的实现类:

1.java.util.ArrayList

内部使用数组实现,查询性能更好

2.2.java.util.LinkedList

内部使用链表实现,增删元素性能更好,首尾增删元素性能最佳

2.2.java.util.Set

1.不可以保存重复元素

Set 常见的实现类:

1.java.util.HashSet
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值