顺义企业建站费用易安卓做网站
集合框架
ArrayList
一、概述
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了 AbstractList ,并实现了 List 接口。
ArrayList中的元素可以通过索引访问,并且可以很容易地添加和删除元素。
二、特点
- 动态数组:ArrayList是一个动态数组,可以根据需要自动扩展或缩小数组的大小。
 - 快速访问:ArrayList中的元素可以通过索引访问,访问速度比普通数组更快。
 - 方便的添加和删除操作:ArrayList提供了add()、remove()等方法,可以方便地添加和删除元素。
 - 可迭代性:ArrayList实现了Iterable接口,可以使用for-each循环遍历元素。
 
三、使用示例
1.创建ArrayList对象
ArrayList<String> list = new ArrayList<String>();
 
 泛型: 在 Java 中,ArrayList 支持使用泛型来指定存储的元素类型。通过使用泛型,我们可以确保 ArrayList 只能存储特定类型的对象,提高了类型的安全性和代码的可读性。
泛型可以是基本数据类型的包装类,也可以是自定义类。
使用泛型的好处是可以在编译时进行类型检查,并且可以避免在运行时出现类型转换错误。同时,通过使用泛型,可以在提取元素时避免使用类型转换。
**注意:**我们不能创建原始数据类型(如int,float,char等)的数组列表。相反,我们必须使用它们对应的包装器类。
基本类型对应的包装类表如下:
| 基本类型 | 引用类型 | 
|---|---|
| boolean | Boolean | 
| byte | Byte | 
| short | Short | 
| int | Integer | 
| long | Long | 
| float | Float | 
| double | Double | 
| char | Character | 
此外,BigInteger、BigDecimal 用于高精度的运算,BigInteger 支持任意精度的整数,也是引用类型,但它们没有相对应的基本类型。
2.添加元素到ArrayList中
list.add("Apple");  
list.add("Banana");  
list.add("Orange");
 
我们还可以使用索引将元素添加到数组列表中。例如,
import java.util.ArrayList;class Main {public static void main(String[] args){ArrayList<String> animals = new ArrayList<>();//添加元素animals.add(0,"Dog");animals.add(1,"Cat");animals.add(2,"Horse");System.out.println("ArrayList: " + animals);}
}
 
3.将一个数组列表的元素添加到另一个数组列表
要将数组列表的所有元素添加到新的数组列表,请使用addAll()方法。例如,
import java.util.ArrayList;class Main {public static void main(String[] args){ArrayList<String> mammals = new ArrayList<>();mammals.add("Dog");mammals.add("Cat");mammals.add("Horse");System.out.println("Mammals: " + mammals);ArrayList<String> animals = new ArrayList<>();animals.add("Crocodile");// 添加mammals所有元素到animalsanimals.addAll(mammals);System.out.println("Animals: " + animals);}
}
 
4 使用asList()初始化ArrayList
与数组不同,我们不能直接初始化数组列表。 但是,我们可以使用Arrays类的asList()方法来达到相同的效果。
为了使用asList()方法,我们必须先导入 java.util.Arrays 包。
例如
import java.util.ArrayList;
import java.util.Arrays;class Main {public static void main(String[] args) {//创建数组列表ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));System.out.println("ArrayList: " + animals);//访问数组列表中的元素String element = animals.get(1);System.out.println("访问元素: " + element);}
}
 
5 获取ArrayList中的元素
1.使用get()方法
String fruit1 = list.get(0); // 获取第一个元素  
String fruit2 = list.get(1); // 获取第二个元素
 
2.使用 iterator() 方法
import java.util.ArrayList;
import java.util.Iterator;class Main {public static void main(String[] args){ArrayList<String> animals = new ArrayList<>();//在数组列表中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");animals.add("Zebra");//创建一个Iterator对象Iterator<String> iterate = animals.iterator();System.out.print("ArrayList: ");//使用Iterator的方法访问元素while(iterate.hasNext()){System.out.print(iterate.next());System.out.print(", ");}}
}
 
6 更改ArrayList元素
要更改数组列表的元素,我们可以使用set()方法。例如,
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals= new ArrayList<>();//在数组列表中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("ArrayList: " + animals);//更改数组列表的元素animals.set(2, "Zebra");System.out.println("修改后的ArrayList: " + animals);}
}
 
7 删除ArrayList元素
1 remove()
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals = new ArrayList<>();//在数组列表中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("初始ArrayList: " + animals);//从索引2中删除元素String str = animals.remove(2);System.out.println("最终ArrayList: " + animals);System. out.println("删除元素: " + str);}
}
 
2 removeAll()
使用removeAll()方法,删除数组中的所有元素
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals = new ArrayList<>();// 在ArrayList中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("初始ArrayList: " + animals);// 删除所有元素animals.removeAll(animals);System.out.println("最终ArrayList: " + animals);}
}
 
3 clear()
还可以使用removeAll()方法,删除数组中的所有元素
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals= new ArrayList<>();//在数组列表中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("Initial ArrayList: " + animals);//删除所有元素animals.clear();System.out.println("Final ArrayList: " + animals);}
}
 
注意:clear()方法比removeAll()方法更高效。
8 获取集合大小
如果要计算 ArrayList 中的元素数量可以使用 size() 方法:
import java.util.ArrayList;public class RunoobTest {public static void main(String[] args) {ArrayList<String> sites = new ArrayList<String>();sites.add("hello");sites.add("world");sites.add("hi");sites.add("china");System.out.println(sites.size());}
}
 
9 遍历 ArrayList
1 for循环
import java.util.ArrayList;public class RunoobTest {public static void main(String[] args) {ArrayList<String> sites = new ArrayList<String>();sites.add("hello");sites.add("world");sites.add("hi");sites.add("china");for (int i = 0; i < sites.size(); i++) {System.out.println(sites.get(i));}}
}
 
2.使用 forEach 循环
import java.util.ArrayList;public class RunoobTest {public static void main(String[] args) {ArrayList<String> sites = new ArrayList<String>();sites.add("hello");sites.add("world");sites.add("hi");sites.add("china");for (String i : sites) {System.out.println(i);}}
}
 
10 ArrayList 排序
要对数组列表的元素进行排序,我们使用Collections类的sort()方法。为了使用它,我们必须先导入java.util.Collections包。
默认情况下,排序以字母或数字升序进行。例如,
import java.util.ArrayList;
import java.util.Collections;class Main {public static void main(String[] args){ArrayList<String> animals= new ArrayList<>();//在数组列表中添加元素animals.add("Horse");animals.add("Zebra");animals.add("Dog");animals.add("Cat");System.out.println("未排序的ArrayList: " + animals);//对数组列表进行排序Collections.sort(animals);System.out.println("排序后的ArrayList: " + animals);}
}
 
以下实例对数字进行排序:
import java.util.ArrayList;
import java.util.Collections;  // 引入 Collections 类public class RunoobTest {public static void main(String[] args) {ArrayList<Integer> myNumbers = new ArrayList<Integer>();myNumbers.add(33);myNumbers.add(15);myNumbers.add(20);myNumbers.add(34);myNumbers.add(8);myNumbers.add(12);Collections.sort(myNumbers);  // 数字排序for (int i : myNumbers) {System.out.println(i);}}
}
 
11 ArrayList转数组
在Java中,可以使用toArray()方法将数组列表转换为数组。例如,
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals= new ArrayList<>();//在数组列表中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("ArrayList: " + animals);//创建一个新的String类型数组String[] arr = new String[animals.size()];//将ArrayList转换成数组animals.toArray(arr);System.out.print("Array: ");for(String item:arr) {System.out.print(item+", ");}}
}
 
12 数组转ArrayList
数组转换为Arraylist。为此,可以使用Arrays类的asList()方法。
要使用asList(),必须先导入java.util.Arrays包。例如,
import java.util.ArrayList;
import java.util.Arrays;class Main {public static void main(String[] args) {//创建一个字符串类型的数组String[] arr = {"Dog", "Cat", "Horse"};System.out.print("Array: ");//打印数组for(String str: arr) {System.out.print(str);System.out.print(" ");}//从数组创建ArrayListArrayList<String> animals = new ArrayList<>(Arrays.asList(arr));System.out.println("\nArrayList: " + animals);}
}
 
13 ArrayList转换为字符串
要将数组列表转换为字符串,可以使用toString()方法。例如
import java.util.ArrayList;class Main {public static void main(String[] args) {ArrayList<String> animals = new ArrayList<>();//在ArrayList中添加元素animals.add("Dog");animals.add("Cat");animals.add("Horse");System.out.println("ArrayList: " + animals);//将ArrayList转换为字符串String str = animals.toString();System.out.println("String: " + str);}
}
 
注意: toString()将整个数组列表转换为单个String。
四、 ArrayLiat 常用API
Java ArrayList 常用方法列表如下:
| 方法 | 描述 | 
|---|---|
| add() | 将元素插入到指定位置的 arraylist 中 | 
| addAll() | 添加集合中的所有元素到 arraylist 中 | 
| clear() | 删除 arraylist 中的所有元素 | 
| clone() | 复制一份 arraylist | 
| contains() | 判断元素是否在 arraylist | 
| get() | 通过索引值获取 arraylist 中的元素 | 
| indexOf() | 返回 arraylist 中元素的索引值 | 
| removeAll() | 删除存在于指定集合中的 arraylist 里的所有元素 | 
| remove() | 删除 arraylist 里的单个元素 | 
| size() | 返回 arraylist 里元素数量 | 
| isEmpty() | 判断 arraylist 是否为空 | 
| subList() | 截取部分 arraylist 的元素 | 
| set() | 替换 arraylist 中指定索引的元素 | 
| sort() | 对 arraylist 元素进行排序 | 
| toArray() | 将 arraylist 转换为数组 | 
| toString() | 将 arraylist 转换为字符串 | 
| ensureCapacity() | 设置指定容量大小的 arraylist | 
| lastIndexOf() | 返回指定元素在 arraylist 中最后一次出现的位置 | 
| retainAll() | 保留 arraylist 中在指定集合中也存在的那些元素 | 
| containsAll() | 查看 arraylist 是否包含指定集合中的所有元素 | 
| trimToSize() | 将 arraylist 中的容量调整为数组中的元素个数 | 
| removeRange() | 删除 arraylist 中指定索引之间存在的元素 | 
| replaceAll() | 将给定的操作内容替换掉数组中每一个元素 | 
| removeIf() | 删除所有满足特定条件的 arraylist 元素 | 
| forEach() | 遍历 arraylist 中每一个元素并执行特定操作 | 
