day002-List类泛型
Posted gzyzhui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day002-List类泛型相关的知识,希望对你有一定的参考价值。
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. 打印交换后的元素
1 package com.yangzhihui.level02.test04; 2 3 public class GenericMethodDemo { 4 public static void main(String[] args) { 5 String[] strArr = {"hello", "world", "java", "good", "idea"}; 6 swap(strArr, 1, 3); 7 for(String str : strArr){ 8 System.out.print(str + ","); 9 } 10 11 System.out.println("====================="); 12 Integer[] intArr = {1, 2, 3, 4, 5, 6}; 13 swap(intArr, 2, 5); 14 for(int i : intArr){ 15 System.out.print(i + ","); 16 } 17 18 } 19 20 public static <T> void swap(T[] array, int index01, int index02){ 21 T temp; 22 23 //交换元素 24 temp = array[index01]; 25 array[index01] = array[index02]; 26 array[index02] = temp; 27 } 28 }
5. 泛型上下限
?: 泛型通配符,可以匹配任意数据类型
5.1 泛型的上限
格式:<? exteands 类>
意义:只能接受该类型及其子类
5.2 泛型的下限
格式:<? super 类>
意义:只能接受该类型及其父类
以上是关于day002-List类泛型的主要内容,如果未能解决你的问题,请参考以下文章