Collection、泛型
目录
一、集合
1.集合的介绍&集合和数组的区别
2.集合框架的介绍
二.集合的通用遍历方式--迭代器
1.集合迭代器的介绍和使用
1.获取集合的迭代器对象
2.遍历集合
2.迭代器的原理(画图)
3.增强for循环
三.泛型
1.什么是泛型
2.泛型的好处
3.泛型的定义和使用
4.泛型统配符
5.泛型的上下限:受限泛型
一、集合
1.集合的介绍&集合和数组的区别
集合:是Java中一种容器,专门保存多个数据
数组:是Java中一种容器,专门保存多个数据
集合 优于 数组:
a.数组长度是固定的 ,而集合长度是可变的
b.集合可以保存多种类型,数组只能保存同一种数据类型
int[] nums = new int[10];
ArrayList<Object> arr = new ArrayList<Object>();
arr.add("java");arr.add(10);
2.集合框架的介绍
JDK1.0 Java中只有Vector类
JDK1.5 由于集合类很多,共性向上(父类)抽取,形成一个集合框架
3.Collection中的通用方法
增: public boolean add(E e);
删: public boolean remove(E e);
改: 无
查: 无
其他:
public void clear();//清空集合
public int size();//获取集合的长度(元素的个数)
public boolean isEmpty();//判断集合是否为空(没有元素)
public boolean contains(元素);//判断集合是否包含指定元素
public Object[] toArray();//把集合转成数组
二.集合的通用遍历方式--迭代器
1.集合迭代器的介绍和使用
迭代器就是用来帮助我们遍历任何一个Collection的实现类的
使用标准代码:
1.获取集合的迭代器对象
Iterator<集合的泛型> it = 集合对象.iterator();
2.遍历集合
while(it.hasNext()){
集合的泛型 对象名 = it.next();
sout(对象名);
}
2.迭代器的原理(画图)
3.增强for循环
语法糖:
代码上书写更简单,底层原理不变
数组的定义语法糖:
int[] nums = new int[]{1,2,3,4,5};
int[] nums = {1,2,3,4,5};
增强for循环就是迭代器的语法糖:
格式:
for(数据类型 变量名 : 数组/集合){
sout(变量名)
}
缺陷: 只能用于普通的集合遍历,不能修改集合中元素,不能获取集合元素的索引
三.泛型
1.什么是泛型
ArrayList<Integer> nums = new ArrayList<Integer>();
ArrayList<String> nums = new ArrayList<String>();
泛型: 是一种不确定的类型
格式: <E> <K,V>
2.泛型的好处
a.不使用泛型
i.需要手动强制类型转换
ii.编译时不报错,运行时直接崩溃(类型转换异常)
b.使用泛型
i.不需要手动强制类型转换
ii.运行时异常 转移到编译时, 变成了编译失败
在JDK1.5之后,Java是强烈建议使用泛型
3.泛型的定义和使用
i.泛型类: 泛型用在了类上
格式:
public class 类名<E>{}
在类中就是使用E这个泛型
private E a;
public void setA(E a){
this.a = a;
}
public E getA(){
return this.a;
}
}
使用:
类名<Integer> 对象名 = new 类名<Integer>();
类名<Double> 对象名 = new 类名<Double>();
类名<String> 对象名 = new 类名<String>();
ii.泛型方法: 泛型用在了方法上
格式:
public <T> void show(T s){
}
使用:
对象名.show(实际参数);
泛型T代表 实际参数的具体类型
iii.泛型接口 : 泛型用在了接口上
格式:
public interface 接口名<E>{
public abstract void show(E a);
}
使用:
- a.实现类 在实现接口时,直接确定接口中泛型的具体类型
格式:
public class 类名 implements 接口名<String>{
public void show(String a){
}
}
- b.实现类 在实现接口时,不去确定泛型,而是继续沿用泛型
格式:
public class 类名<E> implements 接口名<E>{
public void show(E a){
}
}
此时这个类就是一个泛型类,用法和泛型类就一样
4.泛型统配符
泛型通配符: ?
什么作用:
当实际参数的泛型有多种时,形式参数的泛型就没法确定
比如:
Collection<Integer> list1 = new ArrayList<Integer>();
Collection<String> list2 = new ArrayList<String>();
Collection<Double> list3 = new ArrayList<Double>();
方法:
public static void printArrayList(Collection<?> c) {}
那么我们使用泛型通配符去接收不同的泛型
printArrayList(list1);
printArrayList(list2);
printArrayList(list3);
5.泛型的上下限:受限泛型
上限: <? extends Animal>: 代表 泛型必须是Animal 或者 Animal 的子类
下限: <? super Dog>: 代表 泛型必须是Dog 或者Dog的父类
Collection、泛型相关推荐
- java的知识点23——泛型Generics、Collection接口、List特点和常用方法、 ArrayList特点和底层实现
泛型Generics 一般通过"容器"来容纳和管理数据.程序中的"容器"就是用来容纳和管理数据. 数组就是一种容器,可以在其中放置对象或基本类型数据. 数组的优 ...
- Java集合之Collection集合、泛型 【集合综合案例:赌神、赌侠、赌神斗地主】
第一章. Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. ...
- JAVA基础03-Object类,常用类,基本的数据结构, Collection常用体系,泛型-泛型通配符
1.object类 1.概述 java.lang.object类是java语言中的根类,即所有类的超类(基类)他描述的所有的方法子类都可以使用,在对象实例化的时候最终找到的类就是object 如果一个 ...
- [译]聊聊C#中的泛型的使用
写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发现了一些问题,因此也进行了纠正,当然,原文的地 ...
- Java基础:JDK1.5新特性
1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例 ...
- 尚硅谷Java零基础极速入门七天版笔记
Java零基础极速入门 文章目录 Java零基础极速入门 1 Java快速入门 1.1计算机语言 1.2 Java语言 1.3 JVM 1.4 环境配置 2 基础语法 2.1 变量 2.2 标识符 2 ...
- 最详细的Java入门完整教程,学Java先收藏了
从 1995 年第一个版本发布到现在,Java 语言已经在跌宕起伏中走过了 26 年,最新的 Java 版本也已经迭代到 Java 16. java是有一个庞大的生态系统,它的覆盖范围非常广,而且已经 ...
- 我是通过自学C语言转做软件开发工作的,后来用C++、JavaScript、Java、Scala、OC等语言,也都是自学。我觉得,自学一门编程语言,遵循下面的步骤比较容易学会:
先看一遍书,学习基础语法,包括关键字.语句.面向对象.类库等,能知道就成,不理解没关系 搭建开发环境,可以Google.百度,都可以 做编程书后的习题,独立做出来,在IDE中都运行出结果来 设计一些小 ...
- 一阶段--java基础
1.Linux 1.1.什么是操作系统? 类似于一个平台,其他任何软件都需要在这个平台上才能运行 1.2.Linux历史 1.3.操作系统环境 访问磁盘 位置-主文件夹 点击左侧"文件系统 ...
- day10 【迭代器 数据结构】上课
1.Iterator迭代器(掌握) 介绍 1.Iterator是一个接口,属于java.util包下,需要导包 2.属于jdk1.2开始有的,之前使用迭代器Enumeration 3.Iterator ...
最新文章
- 到底什么是故事点(Story Point)?
- 15个实用的grep示例
- swift菜鸟入门视频教程-09-类和结构体
- 【Pytorch神经网络基础理论篇】 01 从零开始介绍深度学习算法和代码实现
- 华为Mate30系列5G版正式开售:有了5G套餐 入手正当时
- windows ftp服务器_ftp是什么意思,在windows系统安装ftp只需3步
- python基础篇——列表与列表算法(上)
- Win10加装SSD固态硬盘后卡顿现象的解决方法
- 知到/智慧树 课程问答讨论开启复制粘贴
- 计算机Word2010在线做题,Word2010题库(答案)试题.doc
- 计算机机房装修效果图,机房装修施工流程是什么? 机房装修效果图
- 「镁客·请讲」太平洋未来科技李建亿:深耕AR技术,布局垂直领域
- 全栈AI火力全开,“云智一体”为开发者凿开产业智能通衢
- Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!
- linux自定义开机启动脚本
- MATALB学习五:矩阵的乘方
- 脱壳入门初级教学(第四课 常见压缩壳与加密壳)
- android4.4.4linux内核下载,Android 4.4源码下载
- 文本三剑客:sed编辑器
- 【机器学习】欠拟合 过拟合 正则化