ArrayList对象是可变数组,可以不设置长度。本文只介绍一些常用方法。该对象是从0下标开始计算的。主要分成七个部分,初始化,增加元素,删除元素,修改元素,查找元素,遍历,排序。更多方法见https://www.jiyik.com/w/java/java-arraylist
容量大小,加载因子,扩容倍数见https://blog.csdn.net/xuekunshan_/article/details/122753349
ArrayList arr1 = new ArrayList();
不初始化容量
PS:若不初始化容量,则ArrayList的初始容量为10,并且当容量满的时候,用当前容量的0.5倍进行扩容
ArrayList arr2 = new ArrayList(3); 初始化容量 容量为3
ArrayList arr3 = new ArrayList(a); //a为集合或数组
用一个集合或数组初始化
add(Object num);
从ArrayList对象的最末尾处添加num值,即在以ArrayList对象的长度的下标处的值设置为num.
add(int index,Object num);
可以在index下标插入num值,index后面的元素全部后移一位。
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(2,100); //在2索引下插入100
System.out.println(list);// 输出 [10, 20, 100, 1, 2]
}
}
Boolean addAll(int index, Collection c)
将给定集合中的所有元素添加到 arraylist 中。如果成功插入元素,返回 true。如果给定的集合为 null,则超出 NullPointerException 异常。注意:如果 index 超出范围,则该方法抛出 IndexOutOfBoundsException 异常。
index
(可选参数)- 表示集合元素插入处的索引值 c
- 要插入的集合元素
如果 index 没有传入实际参数,元素将追加至数组的最末尾。
import java.util.ArrayList;
class Main {
public static void main(String[] args){
// 创建一个动态数组
ArrayList<Integer> primeNumbers = new ArrayList<>();
// 往动态数组里添加元素
primeNumbers.add(3);
primeNumbers.add(5);
System.out.println("Prime Numbers: " + primeNumbers);//Prime Numbers: [3, 5]
// 创建另外的一个动态数组
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
// 把 primeNumbers 的所有元素添加到 numbers 的动态数组中
numbers.addAll(primeNumbers);
System.out.println("Numbers: " + numbers); //Numbers: [1, 2, 3, 5]
}
}
remove(int index);
删除索引为index的元素,返回该元素
remove(Object obj);
删除ArrayList对象中存在obj的元素,删除成功返回true,失败返回false;
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
list.remove(3); //删除下标为3的元素
System.out.println(list); // 输出 [10, 20, 1, 50]
System.out.println(list.remove((Integer)1)); //删除值为1的元素,删除成功,返回true
System.out.println(list); //输出 [10, 20, 50]
}
}
set(int index, Object num);
将ArrayList对象的第index下标的元素的值修改为num。
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
list.set(3, "asd"); //将下标为3的元素修改为asd
System.out.println(list); // 输出 [10, 20, 1, asd, 50]
}
}
Object get(int index);
返回ArrayList对象第 index 下标的元素的值。
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
// ArrayList list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
// 因初始化的时候没有对ArrayList的类型进行确定,即ArrayList list = new ArrayList<>();
// 所以无法使用int 获取list.get(3)的值,会出现不匹配 必须得使用Object获取
Object num = list.get(3); //获取到下标为3的元素
System.out.println(num); //输出2
}
}
boolean contains(Object obj);
查找对象元素里是否存在obj,存在返回true ,否则返回false;
boolean isEmpty();
对象为空返回true, 不为空返回false;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
boolean num = list.contains(20); //确认list是否包含20
System.out.println(num); //输出true
System.out.println(list.isEmpty()); //判断list是否为空 返回false
}
}
int indexOf(Object obj);
查找对象元素里第一次出现的obj,则返回该下标,否则返回-1;
int lastindexOf(Object obj);
查找对象元素里最后一次出现的obj,则返回该下标,否则返回-1;
int size();
返回ArrayList的长度
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(50);
list.add(2);
list.add(50);
list.add(50);
int firstindex = list.indexOf(50); //返回list第最后一次出现50的下标
int endindex = list.lastIndexOf(50); //返回list最后一次出现50的下标
System.out.println(firstindex); //输出2
System.out.println(endindex); //输出5
System.out.println(list.size()); //list的大小 输出6
}
}
将ArrayList转换成数组 toArray()返回的是一个对象数组
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add(50);
list.add(2);
list.add(50);
Object[] nums = new Object[list.size()];
nums = list.toArray();
System.out.println(list); // [10, 20, 50, 2, 50]
System.out.println(nums.getClass().toString()); //class [Ljava.lang.Object;
// 遍历方法
for(Object i : nums) {
System.out.print(i+" ");
}
System.out.println();
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
// 10 20 50 2 50
}
}
Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
以下实例对字母进行排序:
代码示例:
import java.util.ArrayList;
import java.util.Collections; // 引入 Collections 类
public class JiyikTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Taobao");
sites.add("Wiki");
sites.add("Jiyik");
sites.add("Weibo");
sites.add("Google");
Collections.sort(sites); // 字母排序
for (String i : sites) {
System.out.println(i);
}
}
}
以上实例,执行输出结果为:
Google
Jiyik
Taobao
Weibo
Wiki
以下实例对数字进行排序:
代码示例:
import java.util.ArrayList;
import java.util.Collections; // 引入 Collections 类
public class Test {
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);
}
}
}
以上实例,执行输出结果为:
8
12
15
20
33
34