Generic Array List
ArrayList的声明
ArrayList 变量名<类> = new ArrayList <类>();
- 对于Java10 可以这样声明
var 变量名 = new ArrayList<类>();
- 若是不适用 var 关键字, 可以省去右边的类型 如
ArrayList<String> a = new ArrayList<>();
ArrayList的方法
-
使用add方法向ArrayList中添加新对象
ArrayList <Employee> staff = new ArrayList <Employee>();
Employee e = new Employee (signiture);
staff.add(e);
-
remove方法
staff.remove(int index );
删除给定位置的对象并且自动了连接后面的元素。 返回被删除的元素 -
ensureCapacity方法 提前分配内存
ArrayList<Employee> staff = new ArrayList<>(100);
或者
staff.ensureCapacity(100);
-
size方法
staff.size 返回容器中实际的对象个数 类似于数组中的 a.length -
trimToSize方法
一旦已知了某一容器的大小将不再变化 如雇员只有50人且不会增加,可以使用staff.trimToSize()
来回收不用的内存
访问容器元素
- set和get方法
- set
ArrayList <Employee> staff = new ArrayList<>();
staff.add(new Employee("zhang",20));
staff.add(new Employee("yang",20));
staff.set(1, new Employee("tian",20));
staff.get(1);
注意: set 方法的最大下标不可以大于当前元素个数,如在一个只有3个Employee的ArrayList中
staff.set(3,Employee other);//报错
以上代码会报错。 - get
staff.get(index x )//返回一个reference
- set
Typed ArrayList 和 Raw ArrayList 的兼容性问题
Notes:安全起见,我们在new ArrayList时都会确定放入这个链表里面的类,但是有时维护代码时会遇到遗留代码中的 Raw ArrayList
这里介绍如何处理这种代码。
以后来更这里
包裹类型
- Integer
- Long
- Float
- Double
- Short
- Byte
- Character
以上6种有公共父类 Number 类 - Boolean
- 所有的包裹类型都是不可变的类,一旦被创建 就不能再更改值。 包裹类也是final类, 不可创建子类。
因为对于ArraryList<class>
,参数必须是类,不能是基础类型 ,比如int。 但是我们可以利用int的包裹类型区创建一个int型的ArrayList
ArrayList <Integer> i1= new ArrayList<Integer>();
自动装箱 autoboxing
当把一个int的值赋给一个Integer对象,这个int会自动装箱成为一个Integer, 如:
i1.add(3)//这里只给了一个int
等同于 i1.add(Integer.ValueOf(3);
自动开箱 unboxing
int n = i1.get(1);
这里把Integer开箱为int 3 赋给变量n;