List
1.泛型
1.1泛型的定义
- 尖括号 <> 是泛型的标志
- E 是类型变量(Type Variable),变量名一般要大写
- E 在定义时是形参,代表的意思是 最终传入的类型
1.2分类
- 泛型类
- 泛型方法
1.3作用
1.增加编译期间的类型检查
2. 取消类型转换的使用
1.4总结
-
泛型是作用在编译期间的一种机制,即运行期间没有泛型的概念。
-
泛型是为了解决某些容器、算法等代码的通用性而引入,并且能在编译期间做类型检查
-
泛型是一种编译期间的机制,即 MyArrayList 和 MyArrayList 在运行期间是一个类型
-
泛型利用的是 Object 是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作
-
泛型:伪泛型 类型擦除:编译器在编译阶段,把代码转换成jdk1.5之前object,代码兼容
泛型类:在以前的版本中(object)+编译时的类型检测
2. 包装类
2.1 基本数据类型和包装类直接的对应关系
byte 1 Byte
short 2 Short
long 8 Long
float 4 Float
double 8 Double
char 2 Character
boolean 不确定 Boolean
int 4 Integer
2.2
int i=10;
Integer i1=i;// 自动装箱 编译器在编译阶段会使用i构造一个包装类型的对象 自动调valueOf( )
Integer i2=Integer.valueOf( i);//装箱 将基本类型定义的变量转化为包装类的对象
int i3=i2.intValue( );//拆箱 将包装类中的数据拿出
int i4=i1;// 自动拆箱 将包装类型的直对象接转化为对应的基础变量 自动调用intValue( )
2.3Java反编译
反汇编: Terminal命令行
- 进入.class所在的目录
- javap -c 类名 .class文件文件解析
2.4装箱,拆箱
Integer内部维护了一段空间数组 low=-128 high=127
i如果在范围内找到对应的对象直接返回
不在这个范围内 return new Integer(i)
目的 1.节省空间 2.速度快
ArrayList构造一个初始容量为10的空列表
调用set(index,element);向ArrayList中设置元素时,一定要注意index必须要在size范围之内,不能越界
3. List的使用
-
boolean add(E e) 尾插 e void add(int index, E element) 将 e 插入到 index 位置
-
boolean addAll(Collection<? extends E> c) 尾插 c 中的元素 E
-
remove(int index) 删除 index 位置元素 boolean remove(Object o) 删除遇到的第一个
o -
E get(int index) 获取下标 index 位置元素 E set(int index, E element) 将下标
index 位置元素设置为 element -
void clear() 清空 boolean contains(Object o) 判断 o 是否在线性表中 int
-
indexOf(Object o) 返回第一个 o 所在下标
-
int lastIndexOf(Object o) 返回最后一个 o 的下标
-
List subList(int fromIndex, int toIndex) 截取部分 list
Arraylist动态顺序表— 底层结构 连续空间
缺陷: 插入删除任意位置元素效率低
ArrayList可以当成二维数组来使用
LinkedList 双向链表—底层结构:链式结构
优势:在任意位置插入删除元素效率高
缺陷:访问任意位置的元素,Q( N)
ArrayList() 无参构造
ArrayList(Collection<? extends E> c) 利用其他 Collection 构建 ArrayList
ArrayList(int initialCapacity) 指定顺序表初始容量
LinkedList( )无参构造