(Java学习)四、集合进阶

1、Collection

1.1 概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接口不能实例化,只能通过实现类来实例化。

1.2 使用,常用方法

在这里插入图片描述
多态的方式创建
在这里插入图片描述

在这里插入图片描述

1.3 迭代器


在这里插入图片描述

2、List

2.1 概述

List为接口,用其实现类创建对象。
List带整数索引
在这里插入图片描述

2.2 常用方法

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

2.3 并发修改异常

在这里插入图片描述

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

2.4 列表迭代器listIterator

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

在这里插入图片描述
注意:使用Iterator迭代器,在遍历的时候修改会发生并发修改异常。

2.5 增强for循环

在这里插入图片描述
内部原理是一个Iterator迭代器
在这里插入图片描述
检验是否为Iterator迭代器的方法,就是利用Iterator迭代器会发生并发修改异常的特点。结果发现,确实采用增强for遍历的时候进行add操作会发生该异常。所以增强for内部原理确实是一个Iterator迭代器。

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

2.6 栈和队列

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

2.7 数组

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

2.8 List集合子类特点

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

2.9 LinkedList集合特有功能

在这里插入图片描述

3、Set

3.1 概述

在这里插入图片描述
HashSet对集合的迭代顺序不做任何保证,不包含重复元素。

3.2 哈希值

同一个对象多次调用hashCode()方法返回的哈希值是相同的。默认情况下,不同对象的哈希值是不同的。通过方法重写,可以实现不同对象的哈希值是相同的。如下:
在这里插入图片描述

在这里插入图片描述

3.3 HashSet集合概述和特点

在这里插入图片描述

3.4 HashSet保证元素唯一性的源码分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为底层为哈希表存储,所以结合之前学过的哈希表的增删知识就更好理解了。对象的哈希值可以计算出对象的存储位置,先比较该位置是否有元素,如果有则进一步遍历该位置的所有元素(桶存储,一个位置可能对应多个元素),比对哈希值是否相同。如果哈希值相同再进一步通过equals确认内容是否也相同,如果内容相同,才可以确认要存入的新元素为重复元素,重复则不存储。

3.5 数据结构——哈希表

在这里插入图片描述
在这里插入图片描述
哈希值取余得到存储位置(当然这有多种计算方法,对应不同的散列函数)

在这里插入图片描述
在这里插入图片描述
注意要重写hashCode方法和equals方法,才可以实现不重复
在这里插入图片描述

3.6 LInkedHashSet集合概述和特点

在这里插入图片描述
在这里插入图片描述
链表保证元素有序,哈希表保证元素唯一,不重复

3.7 TreeSet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意集合中存储的为引用类型,所以存储整数的时候需要用整数的包装类Integer

3.8 自然排序Comparable的使用

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

在这里插入图片描述
在这里插入图片描述
但是当两个对象名字不同,年龄相同的时候,结果为0,会被认为是重复元素,不会存入。需要进一步修改规则。即
在这里插入图片描述
在这里插入图片描述

3.9 比较器排序Comparator的使用

在这里插入图片描述
在这里插入图片描述
学生类中不需要实现自然排序。借用匿名内部类来实现Comparator<Student>()

在这里插入图片描述
在这里插入图片描述
一定注意,写了主要条件对比,还要记得写次要条件比较,不然当主要条件结果为0时,会认为重复元素,不会存入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、泛型

4.1 概述

在这里插入图片描述
类型名必须为包装类,不能为原始类。例如int不可,要写Integer
在这里插入图片描述
在这里插入图片描述

4.2 泛型类

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

4.3 泛型方法

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

4.4 泛型接口

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

4.5 类型通配符

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

4.6 可变参数

在这里插入图片描述
a是一个int类型的数组
在这里插入图片描述
在这里插入图片描述
如果一个函数有多个参数的时候,可变参数要放到最后

在这里插入图片描述

4.7 可变参数的使用

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

5、Map

5.1 概述和常用方法

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

5.2 遍历Map

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即返回Map中键值对的集合。

在这里插入图片描述
Map.Entry<K, V> 的方法有:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
字符类型为character
取出值做++操作后,要重新存入,才起到修改的效果。

在这里插入图片描述
TreeMap对键进行了排序,键不允许重复。对应TreeSet

6、Collections

6.1 概述

Collection是单列集合的底层接口,而Collections是一个具体的类,针对集合操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值