集合引入01

容器(container):有且只有三种(都有越界异常) ctrl + h 继承结构
1.字符串 StringIndexOutOfBoundsException byte[] 数组
2.数组 ArrayIndexOutOfBoundsException
3.集合 IndexOutOfBoundsException

数组和集合(collection)
1.长度:数组定长,集合可变
2.存储的元素类型
1.数组可以存基本类型,也可以存引用类型 int[] String[]
2.集合只能存引用类型


Collection接口的方法
1.boolean add(Object obj) List恒为true
2.boolean remove(Object obj) 若集合没有此元素返回false
3.boolean contains(Object obj)
4.boolean clear()
5.Object[] toArray()
6.int size()
7.boolean isEmpty() 如果为null调用就空指针异常
Iterator(迭代器)
1.遍历 全部经历(每种经历操作都一样)
2.迭代 同一操作不断重复
版本更新迭代
1.需求分析
2.开发
3.测试
4.上线 1.0 2.0(添加新功能)还要再来一遍

crtl + shift + enter 调到下一行
Iterator(迭代器)
是一种通用的迭代器,只要实现collection接口就可以这样使用
Iterator it = list.iterator;
1.it.hasnext() 判断是否有下一个
2.next 向后移动并返回当前元素
for 和 while 都可以用迭代器来遍历
concurrent并发(注意并发修改异常,不要再迭代的同时,修改集合的长度)

增强for原理是Iterator JDK5后出现 实现Iterator接口的都可以使用
1.数组 Iterable(接口) 实现这个接口 允许成为foreach的目标
2.collection

泛型(generic)
泛型的作用: 一种安全检验机制
1.集合创建不添加泛型,那么该集合可以添加任意引用类型(Object)
2.如果要使用某种类型特有方法,就得强制转换
3.那么在运行时就可能发生转换异常
添加泛型的作用:将运行时期的异常提前到编译时期发现
添加泛型的集合,以后只能存放该类型的元素
Java的泛型是伪泛型(不是真正的泛型)
1.只存在编译阶段,运行阶段会被擦除
泛型的使用
1.泛型类
a.就是在类名上声明泛型的类 --> 相当于定义了一个泛型变量 E(element 元素) 变量名随意,一般大写
b.泛型类的泛型变量是在声明该类实例的时候赋值(引用类型) T = String
c.该类的内部所有 T 变量全部变成String
2.泛型接口(在接口名后面) (枚举,注解 这四个同一等级)
1.格式: 修饰符 class 类名<代表泛型的变量> {}
2.实现类: 实现类实现接口,不实现泛型
3.实现类: 实现接口,同时指定类型,开发很少用到
3.泛型方法
类上没泛型 (例如 toArray(T[] t))
public <T>void get(T[] t){} 此泛型只接受数组
public void get(Object obj) 什么都能接受
1.在返回值前面写泛型
2.在方法调用时给泛型赋值
4.泛型通配符(Symbol) 泛型不存在继承
泛型统配符 : ?
1.可以适配所有引用类型
2.是个符号,不是变量,所以无需定义
上下限
1.<? extends Animal> 上限通配符 Animal及其子类
2.<? super Dog> 下限通配符 Dog及其父类

猜你喜欢

转载自www.cnblogs.com/yfinter/p/9368486.html