5.Collection集合 List集合 泛型
一、Collection集合
1.1 数组和集合的区别
相同点:都是容器,可以存储多个数据。
不同点:
数组的长度是不可变的,集合的长度是可变的。
数组可以存基本数据类型和引用数据类型;集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。
1.2 集合类体系结构
1.3 Collection 集合概述和使用
Collection集合概述:
是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。
JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现。
创建Collection集合对象:
使用多态的方式:Collection<String> collection = new ArrayList<>();
。
具体的实现类ArrayList。
Collection 集合的常用方法
如removeIf方法(根据条件进行删除):
1.4 Collection 集合的遍历
迭代器介绍:
迭代器是集合的专用遍历方式。
Iterator iterator():返回此集合中元素的迭代器,通过集合对象的iterator()方法得到。
Iterator 中的常用方法:
boolean hasNext() :判断当前位置是否有元素可以被取出。
next()方法:获取当前位置的元素,并将迭代器对象移向下一个索引位置。
Collection 集合的遍历
迭代器的删除方法:
1.5 增强for循环
介绍:
它是JDK5之后出现的,其内部原理是一个Iterator迭代器
实现Iterator接口的类才可以使用迭代器和增强for循环(即单列集合可以使用,双列集合不可以使用)。
格式:
for(集合/数组中元素的数据类型 变量名 : 集合/数组名)
{ // 已经将当前遍历到的元素封装到变量中了,直接使用变量即可 }
代码实现:
1.6 增强for循环的注意实现
看代码分析
最终的结果是[a,b,c,d]呢?还是[q,q,q,q]呢?答案是:[a,b,c,d]
原因是这个方法修改的是第三方变量str的值,而集合中元素的值并未发生改变。
二、List集合
2.1 list集合的特有方法
2.2 ArrayList集合源码分析
底层是数组结构实现,特点是查询快,增删慢。
2.3 LinkedList 集合的特有功能
2.4 LinkedList集合的底层源码分析
底层是使用双向链表实现,查询慢,增删快。
三、泛型
3.1 泛型概述
它是在JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型。它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来具体的类型参数化,然后再使用/调用时传入具体的类型。
3.2 泛型定义格式
3.3 泛型的好处
把运行时期的问题提前到了编译时期
避免了强制类型转换
3.4 泛型类
定义格式:修饰符 class 类名<类型> { }
3.5 泛型方法
定义格式:修饰符 <类型> 返回值类型 方法名(类型 变量名) { }
3.6 泛型接口
定义格式:修饰符 interface 接口名<类型> { }
泛型接口实例代码
public interface Generic<T>
{void show(T t);
}
泛型接口实现类1(定义实现类时,定义和接口相同泛型,创建实现类对象时明确泛型的具体类型)
public class GenericImpl<T> implements Generic<T>
{@Overridepublic void show(T t){System.out.println(t);}
}
实现泛型接口实现类2(定义实现类时,直接明确泛型的具体类型)
public class GenericImpl2 implements Generic<Integer>
{ @Override public void show(Integer t) { System.out.println(t); }
}
测试类
3.7 类型通配符
类型通配符:<?>
ArrayList<?>:表示元素类型未知的ArrayList,它的元素可以匹配任何的类型。
但是并不能把元素添加到ArrayList中,获取出来的也是父类类型。
类型通配符上限: <? extends 类型>
ArrayListList <? extends Number>: 它表示的类型是Number或者其子类型
类型通配符下限: <? super 类型>
ArrayListList <? super Number>: 它表示的类型是Number或者其父类型
5.Collection集合 List集合 泛型相关推荐
- java 泛型集合应用_Java泛型集合的应用和方法
展开全部 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以62616964757a686964616fe78988e69d8331333 ...
- 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...
- java集合中的泛型的使用
-----------------------java集合中的泛型的使用------------------------ 我们在项目中使用集合基本99%都是在集合中存储同一种数据类型.既然我们在集合中 ...
- 集合框架和泛型的学习(非常重要,day12)
集合框架 Collection和Map,泛型(Day12) 集合 概念:对象的容器,定义了对多个对象进行操作的常用方法.可实现数组的功能. 和数组的区别:1数组的长度固定 2集合的长度不固定 区别:3 ...
- CSV-03- csv 读写框架支持数组、Map、Collection 等常见集合
集合类 有时候对象中会包含数组.Map.Collection 等常见集合. 为了存储的便利性,默认提供集合的相关支持. 特性和普通字段保持一致,如果指定注解转换,则以注解为准. 使用示例 UserCo ...
- 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载
文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...
- Collection(单列集合)
概述: 是一个单列集合的顶层接口,定义了单列集合都拥有的共性功能,他的功能自己不能使用,必须要通过实现类来使用,学习共性功能,通过实现类ArrayList来使用功能其实就是对集合存放的数据进行操作的行 ...
- 集合 (一) ----- 集合的基本概念与Collection集合详解
相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 集合的基本概念 一.集合的分类 ...
- 正则,异常、Collection、List集合
一,正则表达式 1,概述 正则表达式就是由一些特定的字符组成,代表的是一个规则. 2,书写规则 public boolean matches(String regex) 判断字符串是否匹配正则表达式, ...
- 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )
文章目录 I . 定义集合并初始化 II . 集合泛型用法 III . 集合添加元素 IV . 集合生成函数 V . 集合遍历 VI . 集合示例代码 I . 定义集合并初始化 定义并初始化 List ...
最新文章
- VmWare 与 宿主主机通信 STEP BY STEP (适用于刚開始学习的人)
- Winform开发框架中工作流模块的业务表单开发
- AB1601低功耗之IIC和PWM控制注意事项
- For与Function进阶实战、Lazy的使用笔记总结
- 解决sockjs.js?9be2:1609 GET http://192.168.1.1:8080/sockjs-node/info?t=1634257459…… 中的报错
- Asp.net Core基于MVC框架实现PostgreSQL操作
- ThinkingInJava对this关键字的介绍
- ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解
- Pytorch:手动求导和autograd的计算对比
- Win10,Win7,WinServer2012,WinServer2008内存最大支持
- Android 网络权限配置
- 申请AppleID的界面,连继续按钮都看不到
- CLR,通用语言运行时库
- 【Unity3D插件】AnyPortrait插件分享《(二)制作角色动画》
- ASTC纹理压缩格式介绍
- selenium录制百度3D地图
- [置顶]史上最详细最全的Linux上安装Oracle的教程-centos7-humf
- 第二章 从优化业务流程谈信息集成的必要性
- 学计算机系的考公好考吗,最适合考公务员的十大专业,学个好专业,考公很容易!...
- split,splice,slice 三者的用法
热门文章
- 比较两个字符串是否相等
- 读书笔记 | 墨菲定律(一)
- 第二课.多元高斯分布与其几何特征
- Android测试原理概述(一)
- 怎么html跟asp结合,xml与asp简单结合实现html模板功能.doc
- cytoscape插件bingo使用
- NBT-新年4篇35分文章聚焦宏基因组研究
- mysql加锁处理分析_MySQL 加锁处理分析 ---非常牛逼
- R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
- R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性