• ArrayList


    目录

    一、ArrayList是什么

    二、ArrayList的使用

    (1)导包

     (2)ArrayList的构造方法

    三、ArrayList的常用方法

    (1)添加元素

    (2)删除元素

    (3)获取元素

    (4)获取元素下标

    (5)修改元素

    (6)判断元素是否在线性表中

    (7)清空

    (8)截取部分list

    四、ArrayList的遍历

    (1)for循环

    (2)foreach

    (3)迭代器


    一、ArrayList是什么

    ArrayList类是一个可以动态修改的数组,不同于普通数组,它没有固定的大小限制,可以添加或删除元素,继承于 AbstractList 类,实现了List接口。

    注:ArrayList是以泛型方式实现的,使用时必须先实例化

    二、ArrayList的使用

    (1)导包

    ArrayList类位于 java.util 包中,使用前需要导包

    import java.util.ArrayList;

     (2)ArrayList的构造方法

    ArrayList()

    无参构造方法,在调用该构造方法时,会构造一个空的线性表

    ArrayList arrayList = new ArrayList<>();

    ArrayList(Collection c) 

     利用其他Collection构建ArrayList

    ?是通配符,?extends E :接收的类型为E类型或是E的子类

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(1);
    5. arrayList.add(2);
    6. arrayList.add(3);
    7. ArrayList arrayList1 = new ArrayList<>(arrayList);
    8. }
    9. }

    ArrayList(int initialCapacity)

    指定顺序表初始容量大小为 initialCapacity

    1. //构造一个具有5个容量的列表
    2. ArrayList arrayList1 = new ArrayList<>(5);

     当传入的参数小于0时,会抛出异常 IllegalArgumentException(创建的顺序表容量大小不能为负)

    三、ArrayList的常用方法

    (1)添加元素

    ArrayList可以使用add()方法来添加元素

    boolean add(E e) //在线性表尾添加元素e,添加成功返回true,失败返回false

    void add(int index, E e) //在index位置插入元素e 

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>(3);
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(0,1);
    7. System.out.println(arrayList);//输出结果:[1,3,4]
    8. }
    9. }

    (2)删除元素

    E remove(int index) //删除 index 位置的元素,并返回 index 位置的元素

     boolean remove(Object o) //删除第一个元素o,删除成功返回true,删除失败,返回false

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>(3);
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. arrayList.add(0,1);
    8. System.out.println(arrayList);//输出结果:[1,3,4,4]
    9. System.out.println(arrayList.remove(0));//输出结果:1
    10. Integer integer = 4;
    11. System.out.println(arrayList.remove(integer));//输出结果:true
    12. integer = 5;
    13. System.out.println(arrayList.remove(integer));//输出结果:false
    14. System.out.println(arrayList);//输出结果:[3,4]
    15. }
    16. }

    (3)获取元素

    E get(int index) //获取下标为 index 位置的元素

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>(3);
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(5);
    7. arrayList.add(0,1);
    8. Integer integer = arrayList.get(2);
    9. System.out.println(integer);//输出结果为5
    10. }
    11. }

    arrayList中有n个元素,index的取值应在 [0,n) 之间,否则,抛出 IndexOutOfBoundsException 索引越界异常

    (4)获取元素下标

    int indexOf(Object o) //返回第一个o所在下标,o不存在于列表中则返回-1

    int lastIndexOf(Object o) //返回最后一个o的下标,o不存在于列表中则返回-1

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. Integer integer = 4;
    8. System.out.println(arrayList.indexOf(integer));//输出结果:1
    9. System.out.println(arrayList.lastIndexOf(integer));//输出结果:2
    10. integer = 0;
    11. System.out.println(arrayList.indexOf(integer));//输出结果:-1
    12. }
    13. }

    (5)修改元素

    E set(int index, E e) //将下标为 index 位置的元素修改为 e,并返回 index 位置原来的元素

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. Integer integer = arrayList.set(0,2);
    7. System.out.println(integer);//输出结果为3
    8. }
    9. }

    (6)判断元素是否在线性表中

    boolean contains(Object o) //判断o是否在线性表中,在,返回true;不在,返回 false

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. Integer integer = 4;
    8. System.out.println(arrayList.contains(integer));//输出结果:true
    9. integer = 0;
    10. System.out.println(arrayList.contains(integer));//输出结果:false
    11. }
    12. }

    (7)清空

    void clear() //清空线性表

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. arrayList.clear();
    8. System.out.println(arrayList);//输出结果:[]
    9. }
    10. }

    (8)截取部分list

    List subList(int fromIndex, int toIndex) //截取集合中[fromIndex, toIndex)区间的元素

    subList是List接口中定义的一个方法,用于返回集合中的一段,即从 fromIndex (包含该位置元素)位置,到 toIndex (不包含该位置元素)位置的元素,方法的返回值类型是List,且用ArrayList接收,否则会抛出 ClassCastException 异常。

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. List list = arrayList.subList(0,2);
    8. System.out.println(list);//输出结果:[3,4]
    9. }
    10. }

     

     若要用ArrayList接收方法的返回值,可以对其进行强制类型转换

    四、ArrayList的遍历

    ArrayList可以使用三种方式进行遍历,分别是 for循环、foreach 和 迭代器

    (1)for循环

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. arrayList.add(5);
    8. for (int i = 0; i < arrayList.size(); i++) {
    9. System.out.print(arrayList.get(i) + " ");
    10. }
    11. }
    12. }

    (2)foreach

    foreach中第一个参数是数组元素或集合元素的类型,i是形参名, 第二个参数是数组或集合,foreach自动将数组或集合元素依次赋值给变量i,当每个元素都被迭代一次后,foreach自动结束循环

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. arrayList.add(5);
    8. for (Integer i: arrayList) {
    9. System.out.print(i + " ");
    10. }
    11. }
    12. }

    (3)迭代器

    Iterator对象称为迭代器,用于遍历集合中的元素,实现了Collection接口的集合类都有一个 iterator() 方法,用于返回一个实现了Iterator接口的对象

    Iterator接口的方法:

    hasNext():是否有下一个元素,有则返回true;没有则返回false

    next():返回迭代的下一个元素

    1. public class Test {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. arrayList.add(3);
    5. arrayList.add(4);
    6. arrayList.add(4);
    7. arrayList.add(5);
    8. Iterator iterator = arrayList.iterator();
    9. while (iterator.hasNext()){
    10. System.out.print(iterator.next() + " ");
    11. }
    12. }
    13. }
  • 相关阅读:
    数字化门店| 美甲美睫店管理系统| 小程序教程
    MogDB企业应用 之 Rust驱动
    Docker快速部署springboot项目
    外包干了3个月,技术倒退2年。。。
    Linux中防火墙的简单使用方法
    网页构造与源代码
    03-【HAL库】STM32实现SYN6288模块语音播报.md
    Js中clientX/Y、offsetX/Y和screenX/Y之间区别
    具有动态属性支持的通用空类:stdClass
    一网打尽——线粒体基因组高级分析
  • 原文地址:https://blog.csdn.net/2301_76161469/article/details/132863619