day002-List类、泛型

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. 集合
集合是容器,可以存储任意类型的数据,集合的长度可变。

1.1 集合和数组的比较

1.2 集合分类
单列集合:每次存储时,存储一个元素(Collection),包括:list、set
双列集合:每次存储时,存储两个元素(Map)
1.3 Collection

是所有单列集合的父类
1.4 单列集合的继承体系
Collection
List
ArrayList
LinkedList
Vector
Set
HashSet
LinkedHashSet

2. Iterator迭代器
迭代说的就是遍历。
一个用来遍历集合的对象
可以遍历所有的单列集合
如何获得迭代器,集合对象调用iterator()方法。

2.1 常用方法
boolean hasNext() //判断有没有下一个元素,不移动迭代索引位置
E next() //返回下一个元素,并向前移动一位的迭代索引位置

2.2 迭代的好处
如果集合是不带索引的,那么就不能用普通的for循环遍历,这时就可以用
迭代器遍历。
屏蔽了众多集合的内部实现,提供了统一的遍历方式。
所有的单列集合都可以使用迭代器。双列集合不能使用迭代器。

3.增强for
内部的实现就是一个Iterator
注意点:
1、在迭代遍历、增强for遍历时,不要进行集合的增删操作

4. 泛型
什么是泛型? 就是数据类型参数化。
泛型可以使用在方法上,类上,接口上。
泛型变量可以理解为一种数据类型的占位符。
泛型变量也可以理解为使一种数据类型的变量,必须先定义变量才能使用。
泛型在集合中的使用
a)在创建集合对象时明确指定集合要存储的数据类型
b)如果没有集合存储的数据类型,则默认是Object

泛型在集合使用的好处
a)将运行时错误转换为编译时错误,增强了集合的安全性
b)避免数据类型强制转换的麻烦
泛型在集合中使用的注意事项
在指定数据类型时,在jdk 1.7 必须在等号两边都指定。

4.1 泛型方法概念
在定义方法时定义了泛型变量的方法则成为泛型方法。

泛型方法的定义格式
修饰符 <泛型变量> 返回值类型 方法名(参数类别){...}

泛型变量的命名规则:一般使用大写字符。
常用的的泛型变量有:T(Type), K(Key), V(Value), E(Element)
泛型方法的使用:
泛型变量的具体数据类型由调用方法时的参数决定。
4.2 泛型类
在定义类时定义了泛型变量的类
4.2.1 泛型类的定义格式
class 类名<代表泛型的变量>{...}
4.2.2 泛型类的注意事项具体数据类型由创建对象时的参数决定。如果没有指定数据类型,默认是Object。
4.2.3 静态方法不能使用类上定义的泛型变量,如果静态方法要使用泛型变量就必须自己定义泛型变量

4.3 泛型接口
在定义接口时定义了泛型变量的接口
4.3.1 泛型接口的定义格式
修饰符 interface 接口名<代表泛型的变量>{...}
4.3.2实现方式:
a)实现接口的同时指定泛型变量的具体数据类型(不够灵活)
b)实现接口时不指定泛型变量具体数据类型,将实现类定义为泛型类,在创建实现类对象
指定泛型变量的具体数据类型。

4.4 泛型例子

  4.4.1 描述
    编写一个泛形方法名称为swap,实现指定位置数组元素的交换.数组和要交换的索引作为方法参数
  4.4.2. 操作步骤描述
    1. 编写一个泛形方法,数组是任意类型,并传入2个要交换位置的索引
    2. 使用第三方变量的方式交换数组中的元素
    3. 定义一个String数组,调用swap方法,交换指定索引的元素
    4. 打印交换后的元素
    5. 定义一个Integer数组,调用swap方法,交换指定索引的元素
    6. 打印交换后的元素

 package com.yangzhihui.level02.test04;

 public class GenericMethodDemo {
public static void main(String[] args) {
String[] strArr = {"hello", "world", "java", "good", "idea"};
swap(strArr, 1, 3);
for(String str : strArr){
System.out.print(str + ",");
} System.out.println("=====================");
Integer[] intArr = {1, 2, 3, 4, 5, 6};
swap(intArr, 2, 5);
for(int i : intArr){
System.out.print(i + ",");
} } public static <T> void swap(T[] array, int index01, int index02){
T temp; //交换元素
temp = array[index01];
array[index01] = array[index02];
array[index02] = temp;
}
}

5. 泛型上下限
?: 泛型通配符,可以匹配任意数据类型
5.1 泛型的上限
格式:<? exteands 类>
意义:只能接受该类型及其子类

5.2 泛型的下限
格式:<? super 类>
意义:只能接受该类型及其父类

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“day002-List类、泛型” 的相关文章

php如何实现边输入边显示查询结果功能 - 编程语言

这篇文章主要介绍了php如何实现边输入边显示查询结果功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现边输入边显示查询结果功能文章都会有所收获,下面我们一起来看看吧。 PHP是一种常用的服务器端脚...

Python如何实现报表自动化和自动发送到目的邮箱 - 编程语言

本文小编为大家详细介绍“Python如何实现报表自动化和自动发送到目的邮箱”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现报表自动化和自动发送到目的邮箱”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...

挂账

“挂账”一词并不是会计学中的术语,原因在于其的不规范性,但由于历史原因,为会计人员习惯性的使用。比如,发货后没有及时收到货款的叫挂账。挂在应收账款。 比如,购货后没有马上付款的也叫挂账。挂在应付账款。 比如,暂时不处理的账务,也叫挂账。挂在其他应收款或其他应付款...

Docker中Nginx搭建以及配置

docker nginx搭建 1 docker pull nginx docker pull nginx 2 启动nginx docker run --name nginx -p 80:80 -d nginx 3 查看是否启动 ① docker ps ② 在浏览器输入服务器ip,可以看到“Wel...

Windows10 镜像(正版和原版)-CSDN博客

Windows 10企业版, 版本 22H22022 年 10 月发布64 位简体中文 大小5.55GB MD5DF57824E84BB5375C9FC3AF4CAD58926 SHA1C7C877210AC645C29574E1F110B0277932380A14 SHA2563CB92FAD...