前段时间一直在说数组,今天说下Java集合中常用的ArrayList
ArrayList类是一个可以动态修改的数组,与普通数组的区别就是ArrayList没有固定大小的限制,可以添加或删除元素。ArrayList继承了AbstractList,并实现了List接口
可以看到 ArrayList继承于AbstractList类,实现了List接口。List又继承于Collection, Collection继承于Iterable
ArrayList类位于 java.util包中,使用前需要引入。在idea中写了ArrayList可以自动引入包。可以看下ArrayList的初始化
ArrayList<E> objectName = new ArrayList<>(); //初始化
其中 E: 泛型数据类型,用于设置 objectName的数据类型,只能为引用数据类型。objectName为 对象名
ArrayList是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
ArrayList的一系列操作:
- 添加元素
添加元素时,使用add方法 可以直接添加内容,xxx.add("xxxxxx"); 也可以设置数组下标和内容 xxx.add(index,"xxxx"); index一般是int
我们来看下实例:
import java.util.ArrayList;
public class ArrayListTestDemo {
public static void main(String[] args){
//ArrayList添加元素,先初始化
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Google");
arrayList.add(0,"is"); //数字下标
System.out.println(arrayList);
}
}
运行结果如下:
[is, Google]
这里需要说明下,程序代码一般都是从上到下执行,先显示 Google,然后显示is, 但是is的下标为0, 也就是数组的第一位。所以结果为 is Google
import java.util.ArrayList;
public class ArrayListTestDemo {
public static void main(String[] args){
//ArrayList添加元素,先初始化
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Google");
arrayList.add(0,"is"); //数字下标
arrayList.add(0,"Hello"); //先运行的 is,然后运行 hello发现 index是0,就排在is 前面
System.out.println(arrayList);
}
}
如果在添加数据时,有两个数组的下标值是一样的,怎么处理呢?我们看下运行结果
[Hello, is, Google]
说明后执行的且数组下标一样的先运行并显示了出来。
如果数组下标值超过了数组长度,会有什么结果呢?
import java.util.ArrayList;
public class ArrayListTestDemo {
public static void main(String[] args){
//ArrayList添加元素,先初始化
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Google");
arrayList.add(0,"is"); //数字下标
arrayList.add(0,"Hello"); //先运行的 is,然后运行 hello发现 index是0,就排在is 前面
arrayList.add(100,"worlld"); //index不能超过ArrayList的长度
System.out.println(arrayList);
}
}
100 > 3了,我们看下运行结果:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 100, Size: 3
at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:665)
at java.util.ArrayList.add(ArrayList.java:477)
at WorkStudy.ArrayListTestDemo.main(ArrayListTestDemo.java:12)
可以看到提示超了
需要数据内容正确的话,可以这样看
import java.util.ArrayList;
public class ArrayListTestDemo {
public static void main(String[] args){
//ArrayList添加元素,先初始化
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Google");
arrayList.add(0,"is"); //数字下标
arrayList.add(0,"Hello"); //先运行的 is,然后运行 hello发现 index是0,就排在is 前面
arrayList.add(3,"worlld"); //index不能超过ArrayList的长度
System.out.println(arrayList);
我们看下运行结果:
[Hello, is, Google, worlld]
可以看到在打印这块,ArrayList和普通的数组还是不一样的。普通的数组直接打印,会显示字符,请看实例:
String[] arg = new String[5];
for (int i = 0; i < arg.length; i++) {
arg[i] = "Hello" + i;
}
System.out.println(arg);
运行结果如下:
[Ljava.lang.String;@61bbe9ba
需要使用循环来将数组内的元素都取出
2.访问元素
访问 ArrayList中的元素可以使用get()方法,还是用上面的实例
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Google");
arrayList.add(0,"is"); //数字下标
arrayList.add(0,"Hello"); //先运行的 is,然后运行 hello发现 index是0,就排在is 前面
arrayList.add(3,"worlld"); //index不能超过ArrayList的长度
System.out.println(arrayList);
String arg1 = arrayList.get(0); //访问第一个元素
System.out.println(arg1);
我们来看下结果:
Hello
显示的是第一个元素(数组下标0)
好的,今天就先到这里吧
add()
add(int index, string)
get()