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)实现接口时不指定泛型变量具体数据类型,将实现类定义为泛型类,在创建实现类对象
指定泛型变量的具体数据类型。

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

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

猜你喜欢

转载自www.cnblogs.com/gzyzhui/p/9109183.html
今日推荐