目录
【资料图】
集合
集合基础
ArrayList集合的常用方法
Collection 的常用方法
Collection 的遍历
遍历集合的基本步骤:
List集合
List集合的概述以及特点
List集合的特有方法:
List迭代器:
List增强for循环:
LinkedList集合的特有功能:
Set集合
set集合的特点:
哈希值:
哈希表的存储过程
LinkedHashSet集合的概述和特点
TreeSet集合
TreeSet的特点
Comparable的使用
Comparator比较器排序的使用
泛型
泛型的定义格式
泛型的好处:
泛型类的定义格式
泛型方法
泛型方法的定义格式
泛型接口:
类型通配符
可变参数:
Map集合
Map集合概述
添加元素
Map集合的基本功能
Map集合的获取方法
Map集合的遍历
HashMap集合
集合的嵌套案例
案例:统计字符串中每个字符出现的次数
Collections
常用方法
案例:ArrayList存储学生对象并排序
案例:模拟斗地主(洗牌,发牌,看牌)
案例:模拟斗地主升级版
集合
集合的作用是用来存储和取出数据的
集合基础
提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
格式:ArrayList
E:是一种特殊的数据类型,泛型。
例:ArrayList、ArrayList
构造方法和添加方法
具体实例
当指定添加集合位置的时候,如果当前指定的位置比当前最高位置要高2位甚至更多事,会报错
例如:如上图,现在最大的位置从0开始最大位置为2,那么我现在array.add(4,"javase");
则我现在比最大的位置多出了2,所以会出现报错,这种错误称为集合的索引越界
ArrayList集合的常用方法
如下:
遍历ArrayList集合
通过get关键字和for循环实现
array为集合名
ArrayList的相关练习
Collection(单列集合)
Map(双列集合)
关系表如下:
Collection 的创建及添加元素
Collectionc=new ArrayList();
c.add("hello");
c.add("world");
Collection 的常用方法
Collection 的遍历
Iterator:迭代器,集合的专用遍历方式;
Iterator的常用方法
实例:
遍历集合的基本步骤:
关于Collection 的练习:
结果:
List集合
List集合的概述以及特点
List集合的特有方法:
List迭代器:
ListIterator:可以从任意方向遍历列表(可以从前到后也可以从后到前),
ListIterator方法的不同之处
与Iterator相对应的next()对应previous()//返回列表中上一个元素,并向后移动光标位置
hasNext()相对应的hasprevious()
List增强for循环:
Itable:底层包装的是一个Iterator迭代器
实例:
List集合子类特点:
ArrayList:对应数组(查询快增删慢)
LinkedList:对应链表(查询慢增删快)
LinkedList集合的特有功能:
Set集合
set集合的特点:
HashSet:对集合的迭代顺序不做任何保证(不排序)
即存储顺序不一样
哈希值:
哈希值是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值
public int hashCode():该方法可以返回对象的哈希码值
同一个对象多次调用该方法返回的哈希值为一样的
然而默认情况下不同对象的哈希值是不一样的
重写方法可以让哈希值相同
HashSet集合的特点:
哈希表
哈希表的存储过程
首先我们哈希表其实是一个数组,默认长度为16,首先先计算出哈希值,然后通过哈希值取余16,算出结果来之后,从第一个开始如果当前计算出来的位置没有人的话就直接存储,如果有人那么就进行哈希值的比较,如果哈希值不相同那么就存储进去,如果相同那么就比较内容,如果内容一样那就不存储当前的内容,反之则可以将其存储进去
LinkedHashSet集合的概述和特点
TreeSet集合
TreeSet的特点
我们的TreeSet不能单单使用普通类型,必须使用它的包装类型
自然排序:从小到大排序
Comparable的使用
Comparator比较器排序的使用
泛型
泛型的本质是参数化类型
泛型的定义格式
泛型的好处:
泛型类的定义格式
泛型类的使用(声明泛型是什么类型就是什么类型)
泛型方法
通过泛型类我们可以在调用该方法的时候无论使用什么类型都是可以的
泛型方法的定义格式
通过泛型方法我们可以接受任意的引用类型如:
优点: 可以不用声明是什么泛型,可以在调用的时候直接调用,这时它会自动识别。
泛型接口:
泛型接口的实现类
类型通配符
可变参数:
通过可变参数可以进行多个数据的计算
注意事项
可变参数的使用
Arrays.asList只能更改值,不能增加和删除值
List.of方法的增删改都不行
Set.of方法不允许有重复值,不能进行增删操作 ,没有修改的方法
Map集合
Map集合概述
(Map是一个接口)
创建Map集合的对象
添加元素
保证键的唯一性
当添加的元素如果,它们的键值相同,那么它会替换掉它之前的数据,看以上的案例,当
柳岩这个元素添加上来后,因为它与王祖贤这个元素的键值相同,所以它会替换掉王祖贤这个元素
Map集合的基本功能
Map集合的获取方法
get:根据键值获取值,如果不存在则返回null
KeySet:获取所有键的集合
values:获取所有值的集合
Map集合的遍历
一、
实例
第二种方法
通过EntrySet(键值对对象)方法获取Key值和value值
HashMap集合
同以上Hash一样,没有顺序,只能用增强for遍历
HashMap保证数据的唯一性
要重写hashCode()方法和equals()方法
HashMap集合存储学生对象并遍历,而且保证数据的唯一性
集合的嵌套案例
ArrayList集合存储HashMao元素并遍历
实例:
HashMap集合存储ArrayList元素并遍历
实例:
案例:统计字符串中每个字符出现的次数
实例:
使用TreeMap来进行优化(对key值进行排序)
Collections
是针对集合类操作的工具类
常用方法
Collections.sort(list) ; //从小到大排序
Collections.reverse(list) ; //反转,将原来的顺序进行反转排序
Collections.shuffle(list); //随机置换 ,每次运行都产生在不同的位置
案例:ArrayList存储学生对象并排序
直接利用Collections.sort 方法进行排序
注意:由于sort方法需要的是List 但我们现在是ArraryList 所以我们需要给定一个比较器 Comparator
案例:模拟斗地主(洗牌,发牌,看牌)
实例:
案例:模拟斗地主升级版
要求对牌进行排序