ArrayList类是一个可以动态变化的数组,与普通数组的区别就是它没有固定的长度。对于ArrayList的理解和应用,需要掌握其容量、扩容条件、add、get、remove、遍历删除等方法的使用,以及其底层数据结构和线程安全性等。
ArrayList继承了AbstractList,并实现了List接口。
ArrayList objectName = new ArrayList<>();//E:泛指数据类型,用于设置objectName的数组类型
1.添加元素:
添加元素到ArrayList可以使用add()方法:
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
System.out.println(arrList);
}
}
输出结果
[吐泡泡, SpitBubble]
2.访问元素:
访问ArrayList中的元素可以使用get()方法:
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
System.out.println(arrList);
System.out.println(arrList.get(0));//get()方法访问元素,索引从0开始
System.out.println(arrList.get(1));
}
}
输出结果
[吐泡泡, SpitBubble]
吐泡泡
SpitBubble
3.修改元素
修改ArrayList中的元素使用set()方法:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
System.out.println(arrList);
System.out.println(arrList.get(0));
System.out.println(arrList.get(1));
arrList.set(0,"Java");//修改链表中的索引为0的元素
System.out.println("修改后的数据为:\n"+arrList.get(0));
System.out.println(arrList.get(1));
}
}
输出结果
[吐泡泡, SpitBubble]
吐泡泡
SpitBubble
修改后的数据为:
Java
SpitBubble
4.删除元素
删除ArrayLIst中的元素可以使用remove()方法:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
System.out.println(arrList);
arrList.remove(0);
System.out.println(arrList);
}
}
输出结果
[吐泡泡, SpitBubble]
移除索引为0的数组后:[SpitBubble]
5.ArrayLIst长度
计算ArrayLIst中元素的数量使用size()方法:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
System.out.println("arrList的长度是:" + arrList.size());
}
}
输出结果
arrList的长度是:2
1.for循环迭代数组列表中的元素:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
arrList.add("Java");
//循环遍历数组
for(int i = 0 ; i < arrList.length ; i++){
System.out.println("arrList.get(i)");
}
}
}
输出结果
吐泡泡
SpitBubble
Java
2.for-each迭代数组列表元素:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
arrList.add("Java");
//循环遍历数组
for(String i : arrList ){
System.out.println("arrList.get(i)");
}
}
}
输出结果
吐泡泡
SpitBubble
Java
3.迭代器(Iterator)遍历数组列表元素:
调用ArrayList的iterator方法来获取一个迭代器对象,然后使用while循环和hasNext方法来遍历ArrayList中的元素。在每次循环中,我们调用next方法来获取下一个元素,并将其打印到控制台上。
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("吐泡泡");
arrList.add("SpitBubble");
arrList.add("Java");
// 使用迭代器遍历ArrayList
Iterator<String> it = arrList.iterator();
while (it.hasNext()) {
String element = it.next();
System.out.println(element);
}
}
}
输出结果
吐泡泡
SpitBubble
Java
在使用ArrayList时,可以通过add、get、remove等方法来添加、查询和删除元素。这些方法的具体实现是通过操作底层的数据结构——数组来完成的。例如,add方法会将元素添加到数组的末尾,get方法会根据索引值计算出元素在数组中的位置,并返回该位置上的元素,remove方法会根据元素的值查找该元素在数组中的位置,并将该位置上的元素置为null,并更新size属性。
由于ArrayList的底层数据结构是数组,因此在查询和遍历元素时,速度非常快。但是,在添加和删除元素时,由于需要重新分配内存空间和复制数组,因此速度比较慢。为了提高程序的效率,可以使用一些优化技巧,例如使用扩容机制和预分配初始容量等。
总之,ArrayList的底层数据结构是数组,这种数据结构在查询和遍历元素时非常高效,但是在添加和删除元素时可能会比较慢。为了提高程序效率,可以使用扩容机制和预分配初始容量等优化技巧。