ArrayList 是 List 接口的实现类。是 List 存储特征的具体实现。 ArrayList 底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全

添加元素

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class ArrayListTest {
  4. public static void main(String[] args) {
  5. //实例化ArrayList容器
  6. List<String> list=new ArrayList<>();
  7. //第一种添加元素(collection类中的add),返回布尔值
  8. list.add("杭州");
  9. System.out.println(list);
  10. //第二种添加元素,无返回;index值不能超过元素个数
  11. list.add(1,"耿仁龙");
  12. System.out.println(list);
  13. }
  14. }

image.png

image.png

获取元素

image.png

image.png

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class ArrayListTest {
  4. public static void main(String[] args) {
  5. //实例化ArrayList容器
  6. List<String> list=new ArrayList<>();
  7. //第一种添加元素(collection类中的add),返回布尔值
  8. list.add("拉尼");
  9. System.out.println(list);
  10. //第二种添加元素,无返回;index值不能超过元素个数
  11. list.add(1,"耿仁龙");
  12. list.add("拉塔恩");
  13. System.out.println(list);
  14. //获取指定下标的元素,不能越界
  15. System.out.println(list.get(0));
  16. System.out.println(list.get(1));
  17. System.out.println("------------------");
  18. for(int i=0;i<list.size();i++){
  19. System.out.println(list.get(i));
  20. }
  21. }
  22. }

替换元素

image.png

        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));
        }

删除元素

image.png

根据索引删除元素

image.png

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));
        }

image.png

删除指定元素

image.png

        boolean val2=list.remove("爱在日落");
        System.out.println(val2);  //返回布尔值,是否删除正确
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

清空容器

image.png

        System.out.println("----清空容器--------");
        list.clear();
        System.out.println(list.size());

image.png

判断容器是否为空

image.png

        System.out.println("-----容器判空------");
        boolean val3=list.isEmpty(); //返回布尔值,true表示容器是空的
        System.out.println(val3);

image.png

判断容器是否包含指定元素

image.png

String val4=list.contains("耿仁龙");  
System.out.println(val4);  //返回布尔值,是否包含

查找元素的位置索引

若是不存在,返回 -1

查找元素第一次出现的位置索引

image.png

//indexOf 方法返回的是元素在容器中第一次出现的位置。
//在容器中不存在则返回-1
int index = list.indexOf("itbz4");
System.out.println(index);

查找元素最后一次出现的位置

image.png

//lastIndexOf 方法返回的是元素在容器中最后一次出现的位置,如果元素
//在容器中不存在则返回-1
int lastIndex = list.lastIndexOf("itbz");
System.out.println(lastIndex);

将单例集合转换为数组

转换为Object数组

image.png

        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);
        }

转换为泛型类型数组

image.png

        //将单例结合转换为指定类型数组,但需要参考泛型中的类型
        System.out.println("------转换泛型类型数组-----");
        String[] arr2=list.toArray(new String[list.size()]);
        for(int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }

image.png

容器的并集操作

image.png

        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);
        }

容器的交集操作

image.png

        boolean flag7=a.retainAll(b); //返回布尔值,判断成功与否
        System.out.println(flag7);
        for(Integer inte1:a){
            System.out.println(inte1);
        }

容器的差集操作

image.png

        boolean flag8 = a.removeAll(b);
        System.out.println(flag8);
        for(Integer inte3:a){
            System.out.println(inte3);
        }