一、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集合 泛型相关推荐

  1. java 泛型集合应用_Java泛型集合的应用和方法

    展开全部 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以62616964757a686964616fe78988e69d8331333 ...

  2. 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)

    本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...

  3. java集合中的泛型的使用

    -----------------------java集合中的泛型的使用------------------------ 我们在项目中使用集合基本99%都是在集合中存储同一种数据类型.既然我们在集合中 ...

  4. 集合框架和泛型的学习(非常重要,day12)

    集合框架 Collection和Map,泛型(Day12) 集合 概念:对象的容器,定义了对多个对象进行操作的常用方法.可实现数组的功能. 和数组的区别:1数组的长度固定 2集合的长度不固定 区别:3 ...

  5. CSV-03- csv 读写框架支持数组、Map、Collection 等常见集合

    集合类 有时候对象中会包含数组.Map.Collection 等常见集合. 为了存储的便利性,默认提供集合的相关支持. 特性和普通字段保持一致,如果指定注解转换,则以注解为准. 使用示例 UserCo ...

  6. 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载

    文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...

  7. Collection(单列集合)

    概述: 是一个单列集合的顶层接口,定义了单列集合都拥有的共性功能,他的功能自己不能使用,必须要通过实现类来使用,学习共性功能,通过实现类ArrayList来使用功能其实就是对集合存放的数据进行操作的行 ...

  8. 集合 (一) ----- 集合的基本概念与Collection集合详解

    相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 集合的基本概念 一.集合的分类 ...

  9. 正则,异常、Collection、List集合

    一,正则表达式 1,概述 正则表达式就是由一些特定的字符组成,代表的是一个规则. 2,书写规则 public boolean matches(String regex) 判断字符串是否匹配正则表达式, ...

  10. 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )

    文章目录 I . 定义集合并初始化 II . 集合泛型用法 III . 集合添加元素 IV . 集合生成函数 V . 集合遍历 VI . 集合示例代码 I . 定义集合并初始化 定义并初始化 List ...

最新文章

  1. VmWare 与 宿主主机通信 STEP BY STEP (适用于刚開始学习的人)
  2. Winform开发框架中工作流模块的业务表单开发
  3. AB1601低功耗之IIC和PWM控制注意事项
  4. For与Function进阶实战、Lazy的使用笔记总结
  5. 解决sockjs.js?9be2:1609 GET http://192.168.1.1:8080/sockjs-node/info?t=1634257459…… 中的报错
  6. Asp.net Core基于MVC框架实现PostgreSQL操作
  7. ThinkingInJava对this关键字的介绍
  8. ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解
  9. Pytorch:手动求导和autograd的计算对比
  10. Win10,Win7,WinServer2012,WinServer2008内存最大支持
  11. Android 网络权限配置
  12. 申请AppleID的界面,连继续按钮都看不到
  13. CLR,通用语言运行时库
  14. 【Unity3D插件】AnyPortrait插件分享《(二)制作角色动画》
  15. ASTC纹理压缩格式介绍
  16. selenium录制百度3D地图
  17. [置顶]史上最详细最全的Linux上安装Oracle的教程-centos7-humf
  18. 第二章 从优化业务流程谈信息集成的必要性
  19. 学计算机系的考公好考吗,最适合考公务员的十大专业,学个好专业,考公很容易!...
  20. split,splice,slice 三者的用法

热门文章

  1. 比较两个字符串是否相等
  2. 读书笔记 | 墨菲定律(一)
  3. 第二课.多元高斯分布与其几何特征
  4. Android测试原理概述(一)
  5. 怎么html跟asp结合,xml与asp简单结合实现html模板功能.doc
  6. cytoscape插件bingo使用
  7. NBT-新年4篇35分文章聚焦宏基因组研究
  8. mysql加锁处理分析_MySQL 加锁处理分析 ---非常牛逼
  9. R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
  10. R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性