- 集合:存储数据的容器
集合特点:只能存引用类型,出书类型不受限定,长度可变
===============================================================
- collection接口
存单个对象的集合的根接口
list派系:可重复,有序
set派系:不可重复,无序
2.1 collection常用方法:
2.2 遍历
collection中没有提供下标标准,只能使用增强for循环与迭代器方法。
3. 泛型
3.1 泛型是起约束作用的
泛型使用在类中:类名<标识符,E T V K>
泛型用在成员属性与参数中:private 标识符 属性;setT/getT
泛型用在方法中:一般用于约束返回值类型和参数类型;public void fun(T t)
泛型约束后,只能使用所约束的类型
泛型使用在接口中:一般用于约束参数和返回值类型
泛型参数可以写多个,中间用逗号隔开
好处:(1)提高代码的重用性;(2)防止类型转换异常,提高代码的安全性
3.2 泛型的使用注意事项:
(1)泛型不能使用在static中, 加载时机问题
(2)泛型不能使用在final中,需要传值,但泛型不需要
(3)可以声明数组,但不能给数组进行初始化,不知道空间
(4)不能用在泛型定义同名且参数格式一致的重载方法,默认是相同方法
(5)new两个不同对象且约束类型不同时,二者不能相互赋值
3.3 受限泛型
1)<?>:表示任意类型
2)<? extends T>:表示T类或者T类的子类
3)<? super T>:表示T类或者T类的父类
4. 迭代器
迭代器相当于一个游标,最初获取迭代器时,迭代器的位置在所有元素前面,每迭代一个对象,迭代器向后移动一个位置
Iterator <数据类型> 对象名 = list。iterator;
while(对象名。hasnext)
对象名。next;
5. list接口:collection接口的子接口
使用list接口,则实现类的应用会更强大
特点:用实现类Arraylist去实现------有序且允许重复
Arraylist的存储方式:数组扩容(源代码–抓主线)
反向遍历:对象名。hasprevious -----> 对象名。previous
5.2 linkedlist类:list的子接口 ----- 重复有序
存储方式:双向链表
专有迭代器:降序:前面与list一样,后面 =list。descendingiterator();
5.3 Arraylist与linkedlist的比较总结
5.4 vector类:list的实现类
特有方法,枚举器遍历:
5.4 stack类:list的实现类
特点:先进后出
push:入栈
pop:出栈