ArrayList 是 List 接口的实现类。是 List 存储特征的具体实现。 ArrayList 底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全
添加元素
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest {
public static void main(String[] args) {
//实例化ArrayList容器
List<String> list=new ArrayList<>();
//第一种添加元素(collection类中的add),返回布尔值
list.add("杭州");
System.out.println(list);
//第二种添加元素,无返回;index值不能超过元素个数
list.add(1,"耿仁龙");
System.out.println(list);
}
}
获取元素
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest {
public static void main(String[] args) {
//实例化ArrayList容器
List<String> list=new ArrayList<>();
//第一种添加元素(collection类中的add),返回布尔值
list.add("拉尼");
System.out.println(list);
//第二种添加元素,无返回;index值不能超过元素个数
list.add(1,"耿仁龙");
list.add("拉塔恩");
System.out.println(list);
//获取指定下标的元素,不能越界
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println("------------------");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
替换元素
System.out.println("----替换元素-------");
String val=list.set(2,"拉塔恩");
System.out.println(val); //返回被替换的元素
for(int j=0;j<list.size();j++){
System.out.println(list.get(j));
}
删除元素
根据索引删除元素
System.out.println("------根据索引删除------");
String val1=list.remove(3);
System.out.println(val1); //返回被删除的元素
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
删除指定元素
boolean val2=list.remove("爱在日落");
System.out.println(val2); //返回布尔值,是否删除正确
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
清空容器
System.out.println("----清空容器--------");
list.clear();
System.out.println(list.size());
判断容器是否为空
System.out.println("-----容器判空------");
boolean val3=list.isEmpty(); //返回布尔值,true表示容器是空的
System.out.println(val3);
判断容器是否包含指定元素
String val4=list.contains("耿仁龙");
System.out.println(val4); //返回布尔值,是否包含
查找元素的位置索引
查找元素第一次出现的位置索引
//indexOf 方法返回的是元素在容器中第一次出现的位置。
//在容器中不存在则返回-1
int index = list.indexOf("itbz4");
System.out.println(index);
查找元素最后一次出现的位置
//lastIndexOf 方法返回的是元素在容器中最后一次出现的位置,如果元素
//在容器中不存在则返回-1
int lastIndex = list.lastIndexOf("itbz");
System.out.println(lastIndex);
将单例集合转换为数组
转换为Object数组
System.out.println("--------将单例集合转换为数组------");
//将arraylist转换为object[]
//但不能将转换的数组做强制类型转换
Object[] arr=list.toArray(); //toarray()方法返回一个数组
for(int i=0;i<arr.length;i++){
System.out.println(arr[i].getClass());
String str=(String)arr[i];
System.out.println(str);
}
转换为泛型类型数组
//将单例结合转换为指定类型数组,但需要参考泛型中的类型
System.out.println("------转换泛型类型数组-----");
String[] arr2=list.toArray(new String[list.size()]);
for(int i=0;i<arr2.length;i++){
System.out.println(arr2[i]);
}
容器的并集操作
List<Integer> a=new ArrayList<>();
a.add(1);
a.add(2);
a.add(3);
List<Integer> b=new ArrayList<>();
b.add(3);
b.add(4);
b.add(5);
//a并b,最终在a里面,若有一个为空,则并集失败
boolean flag6=a.addAll(b); //返回结果是个布尔值,判断是否并集成功
System.out.println(flag6);
for(Integer inte:a){
System.out.println(inte);
}
容器的交集操作
boolean flag7=a.retainAll(b); //返回布尔值,判断成功与否
System.out.println(flag7);
for(Integer inte1:a){
System.out.println(inte1);
}
容器的差集操作
boolean flag8 = a.removeAll(b);
System.out.println(flag8);
for(Integer inte3:a){
System.out.println(inte3);
}