一、javaSE (十六)List的子类、泛型、增强for循环、静态导入、可变参数
1:List的子类(掌握)
(1)List的子类特点
ArrayList:
底层数据结构是数組,查迿快,增删慢
线程不安全,效率高
Vector:
底层数据结构是数組,查询快,增删慢
线程安全,效率低
LinkedList:
底层数据结枃是链表,查询慢,增删快
线程不安全,效率高
(2)Arraylist
A:没有特有功能需要学习
B:案例
a: Arraylist存储字符串并遍历
b: Arraylist存储自定义对象并遍历
(3)Vector
A:特有功能
a:添加:
public void addElement (E obj) --add()
b: 获取
public E elementAt (int index) --get()
public Enumeration<E> elements() --iterator()
B:案例
a: Vector存储字符坐并遍历
b: Vector存储自定义对象并通历
(4)Linkedlist
A:有特有功能
a:添加
addFirst()
addLast()
b:删除
removeFirst (
removeLast(
c:获取
getFirst()
getLast()
B:案例9 tlast(
a: Linkedlist存储字符串并遍历
b: Linkedlist存储自定义对象并遍历
(5)案例:
A:去除集合中的多个字符串的重复元素
如果字符串的内容相同,即为重复元紊
B:去除集合中的多个自定义对象的重复元素
如果自定义对象的成员变量值都相同,即为重复元紊
C:用LinkedList模拟一个栈数据结构的集合类,并测试。
你要定义一个集合类,只不过内部可以使用 LinkedList来实现。
2:泛型(掌握)
(1)泛型概述
是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型
(2)格式
<数据类型>
注意:该数据类型只能是引用类型A
(3)好处
A:把运行时期的问题提前到了编译期间
B:避免了强制类型转换
C:优化了程序设计,解法了黄色警告线问题,让程序更玄全
(4)泛型的前世今生
A:泛型的由来
Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
B:泛型类
C:泛型方法
D:泛型接口
E:泛型高级通配符
?
? extends E
? super E
(5)我们在哪里使用呢?
般是在集合中使用
3:增强for循环(掌握)
(1)是for循环的一种
(2)格式
for(元素的数据类型 变量名:数组或者Collection集合的对象){
使用该变量即可,该变量其实就是数组成者集合中的元素
}
(3)好处
简化了数组和集合的遍历
(4)弊端
增强for循环的目标不能为nu11,建议在使用前,先判断是否为nu1l
4:静态导入(了解)
(1)可以导入到方法级别的导入
(2)格式:
import static 包名...类名.方法名;
(3)注意事项
A:方法必须是静态的
B:如果多个类下有同名的方法,就不好区分了,还得加上前缀
所以一般我们并不使用静态导入,但是一定要能够看懂
5:可变参数(掌握)
(1)如果我们在写方法的时候,参数个数不明确,就应该定义可变参数
(2)格式:
絛饰符 返回值类型 方法名(数据类型... 变量){}
注意:
A:该变量其实是一个数组名
B:如果一个方法有多个参数,并且有可变参数,可变参数必须在最后
(3) Arrays工具类的一个方法
aslist()把数组转成集合
注意:这个集合的长度不能改变