目录
集合容器
数组(Array)有什么缺点?
1.在创建数组的时候,就需要定死长度,在运行过程中,需要判断剩余长度,并动态扩容
2.在中间插入的时候,需要将后面的元素进行后移
3.在中间删除的时候,需要将后面元素进行前移
数组的封装类 - 列表(集合)(ArrayList)是一个封装类:有成员变量,构造方法,成员方法。
数组特点:有序的,不唯一的
构造方法:先研究如何构造方法
ArrayList()
ArrayList(int)
成员变量:研究构造出来的对象中有什么
elementDate---Object[]类型
size---int类型
成员方法:研究如何操作对象中的成员
add(int) --在数组尾部的第一个不为空的位置添加
add(int,E)--在数组中的指定位置插入
set(int,E) --修改数组指定位置
remove(int)---根据数组索引号删除
remove(Object)--根据指针移除,如果存在多个,只会移除第一个
get(int)--根据指定的索引号找到某个元素并返回
ArraysList中的 "E"到底是什么?
泛型:用泛型来实现类中用到的数据类型的未知
--作者在编写的时候用"E"来表达数据类型的未知
--调用者在使用的时候,可以给出"E"的具体类型,也可以不给出
如果给出“E”的具体类型,是在构造ArrayList对象(在声明指针)的时候给出
例如:E=String E=Car E=Dog
不给的话"E"=Object
给出E的具体数据类型的语法:
ArrayList<String>al1=new ArrayList();
ArrayList<Car>al2=new ArrayList();
package Charpter12;
import Chapter04汽车租聘系统.Car;
import java.util.ArrayList;
public class Demo02 {
public static void main(String[] args) {
//未指定泛型“E”的具体类型,E=Object
ArrayList al1=new ArrayList();
Car car =new Car();
car.setBrand("玛莎拉蒂");
al1.add(car);//发生向上转型car添加Object类型的数组中
//Car car2=al1.get(0);
Object obj=al1.get(0);
Car car3=(Car)al1.get(0);
//指定了E为Car类型
ArrayList<Car>al2=new ArrayList<>();
al2.add(car);
Car car4=al2.get(0);
}
}
(可以是参数类型,可以是返回值类型,可以是任意变量类型,可以是向下转型的类型)
用泛型的好处是,被调用方可以帮调用方写向下转型的代码
双向链表封装类--LinkedList
底层:Node对象
构造方法
成员变量
成员方法
<