ArrayList对象是可变数组,可以不设置长度。下面介绍一些常用方法。该对象是从0下标开始计算的。主要分成四个部分,增加元素,删除元素,修改元素,查找元素。
是有序的
目录
一、增加元素
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<Integer> list = new ArrayList<Integer>();
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]
}
}
二、删除元素
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<Integer> list = new ArrayList<Integer>();
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((Object)90)); //删除值为90的元素,明显删除失败 返回 false
System.out.println(list); //输出 [10, 20, 1, 50]
}
}
三、修改元素值
set(int index, Object num); // 将ArrayList对象的第index下标的元素的值修改为num。
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
list.set(3, 999); //将下标为3的元素修改为999
System.out.println(list); // 输出 [10, 20, 1, 999, 50]
}
}
四、查找元素
(1)查找返回元素值
Object get(int index); //返回ArrayList对象第 index 下标的元素的值。
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(1);
list.add(2);
list.add(50);
int num = list.get(3); //获取到下标为3的元素
System.out.println(num); //输出2
}
}
(2)查找返回boolean值
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<Integer> list = new ArrayList<Integer>();
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
}
}
(3)查找返回int值
int indexOf(Object obj); //查找对象元素里第一次出现的obj,则返回该下标,否则返回-1;
int lastindexOf(Object obj); //查找对象元素里最后一次出现的obj,则返回该下标,否则返回-1;
int size(); //返回对象长度
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
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<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(50);
list.add(2);
list.add(50);
Object[] nums = new Object[list.size()];
nums = list.toArray();
for(Object i : nums) {
System.out.print(i+" ");
}
}
}
例题: 激光样式
这道题就可以用ArrayList类来存储数据。
题解:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(3);
for(int i =2 ;i<30;i++) {
list.add(list.get(i-1)+list.get(i-2));
}
System.out.println(list.get(29));
}
}
此外,ArrayList类常和HashMap类搭配,用来存储一张二维表。每行表示的是ArrayList对象的元素,每行对应的多个列则就是HashMap类中key = value 的形式存储的。
六、对ArrayList数组排序
使用的是Collections.sort(List<T> list);不是系统自带的包装类不可以排序,需要重写函数
代码示例:
import java.util.ArrayList;
import java.util.Collections;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(100);
list.add(50);
Collections.sort(list);
System.out.println(list); //输出[1, 50, 100]
}
}