一、概念
ArrayList可以看作是一个可以动态修改和动态改变大小的数组,与普通数组最大的区别就是它没有固定大小的限制,并且可以在add和remove数组内元素的时候,自动增大或缩小数组。ArrayList继承了 AbstractList ,并实现了 List 接口。
但是ArrayList并不是一个数组,它是java.util包中的一个类。
在使用ArrayList时,我们只是在使用ArrayList类型的对象,因此和其他类型对象的使用一样,我们用“.”运算符来调用它的方法。
二、使用方法
1、ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<E>(); // 初始化
- E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。例如:我将该ArrayList的泛型指定为Cat之后,该数组中就只能存放Cat类型的对象。
- objectName: 对象名
2、添加元素
使用add()方法将元素添加到ArrayList,并遍历元素:
package Demo;
import java.util.ArrayList;
public class DemoArraylistEach {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("迪丽热巴");
list.add("古力娜扎");
list.add("马儿扎哈");
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
输出结果如下:
[迪丽热巴, 古力娜扎, 马儿扎哈]
迪丽热巴
古力娜扎
马儿扎哈
3、删除元素
使用remove()方法将元素从ArrayList中删除:
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
//下面是两种从ArrayList中删除元素的方法
sites.remove(3); // 按照索引值删除第四个元素
sites.remove("Google"); // 直接删除Google
System.out.println(sites);
}
}
输出结果如下:
[Google, Runoob, Taobao]
4、计算ArrayList大小
使用size()方法计算ArrayList大小:
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.size());
}
}
输出结果如下:
4
5、查询ArrayList中特定元素
使用contains()方法ArrayList中是否有某个元素:
ArrayList<Egg> myList = new ArrayList<Egg>();
Egg s = new Egg();
Egg b = new Egg();
myList.add(s);
myList.add(b);
boolean isIn = myList.contains(s);
输出结果如下:
True
6、查询ArrayList中特定元素的位置
使用indexOf()方法查询ArrayList中某个元素的位置:
ArrayList<Egg> myList = new ArrayList<Egg>();
Egg s = new Egg();
Egg b = new Egg();
myList.add(s);
myList.add(b);
boolean idx = myList.indexOf(s);
输出结果如下:(因为是从0开始的:0,1,2,3......)
0
7、判断集合是否为空:
使用isEmpty()方法判断集合是否为空:
ArrayList<Egg> myList = new ArrayList<Egg>();
Egg s = new Egg();
Egg b = new Egg();
myList.add(s);
myList.add(b);
boolean empty = myList.isEmpty();
输出结果如下:
False
三、ArrayList与一般数组的区别
1、一般数组在创建时就必须确定大小
- 但是对于ArrayList,你只需要创建出此类型的对象即可。它不需要指定大小,因为它会在加入或删除元素时自动调整大小。
new String[2]; ///指定大小
new ArrayList<String>()
2、存放对象给一般数组时,必须指定位置
- 必须要指定在0到比length小1之间的数字,如果索引值超越了数组的限制(例如数组声明为2,但是指定的数字是3),就会报错。
- 使用ArrayList时,可以用add(Int, Object)形式的方法来指定索引值,或使用add(Object)形式的方法让它自行管理大小。
myList[1]=b; ///指定索引值
myList.add(b);
3、一般数组使用特殊的语法
- ArrayList是个普通对象,所以不会有特殊的语法。方括号是用在数组上的特殊语法。
myList[1];
4、ArrayList是参数化的
- 在Java5.0之后,ArrayList便有了参数化类型,即可以声明出要存放于ArrayList中元素的类型
ArrayList<String> //<String>是类型参数
三、Tips
虽然ArrayList只能携带对象,而不是primitive主数据类型(即int, string......)。但编译器能够自动的将primitive主数据类型包装成Object以存放在ArrayList中,所以ArrayList<String>是合理的。