Java 集合系列(二)ArrayList详解

Java 集合系列(二)ArrayList详解

一、ArrayList概述

ArrayList是Java中最常用的集合类之一,其底层是由数组实现的动态数组结构。与数组相比,ArrayList具有容量可动态增加、元素可动态删除、插入,方便灵活,更加适合实际业务需求。

二、ArrayList常用操作

1.创建ArrayList集合

通过无参构造器可以创建一个初始容量为10的ArrayList集合:

ArrayList<Object> list = new ArrayList<>();

通过指定初始容量的构造器可以创建一个指定初始容量的ArrayList集合:

ArrayList<Object> list = new ArrayList<>(20);

或者通过直接添加元素的方式来创建ArrayList集合:

ArrayList<Object> list = new ArrayList<>(Arrays.asList(1,2,3,4))

2.向ArrayList中添加元素

ArrayList集合通过调用add()方法来添加元素,示例代码:

ArrayList<Object> list = new ArrayList<>();
list.add(1);
list.add("list");
list.add(3.14);

3.获取ArrayList中的元素

通过调用get()方法可以获取ArrayList中指定索引位置的元素,示例代码:

System.out.println(list.get(0));  // 输出结果为1

4.修改ArrayList中的元素

通过调用set()方法可以修改ArrayList中指定索引位置的元素,示例代码:

list.set(1, "newList");

5.删除ArrayList中的元素

通过调用remove()方法可以删除ArrayList中指定元素,示例代码:

list.remove(0);  // 删除第一个元素

6.遍历ArrayList

通过for循环或者迭代器等方式可以对ArrayList进行遍历,示例代码:

for (Object obj : list) {
    System.out.println(obj);
}

三、ArrayList性能分析

1.数组扩容

ArrayList在执行添加元素操作时,如果发现当前数组的容量不足以容纳所有元素,就会进行数组扩容。扩容的基本算法是创建一个新的数组,并将原数组中的元素复制到新数组中。这个过程的时间复杂度为O(n),其中n为列表的长度。

2.尾部添加元素

由于ArrayList底层是由数组实现的,因此它对于尾部添加元素的效率是非常高的,时间复杂度为O(1)。

3.中间插入、删除元素

由于ArrayList底层是由数组实现的,因此对于中间插入、删除元素的效率较低,时间复杂度为O(n)。

四、ArrayList示例

1.向一个ArrayList集合中添加10000个整数

本示例演示向ArrayList集合中添加10000个随机整数,以测试集合添加元素性能。测试程序如下:

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();

        long startTime = System.currentTimeMillis();

        for (int i = 0; i < 10000; i++) {
            list.add((int) (Math.random() * 10000));
        }

        long endTime = System.currentTimeMillis();

        long timeElapsed = endTime - startTime;

        System.out.println("ArrayList添加10000个元素的时间:" + timeElapsed + "ms");
    }
}

输出结果:

ArrayList添加10000个元素的时间:5ms

2.使用ArrayList实现顺序栈

本示例演示如何使用ArrayList实现简单的顺序栈数据结构,顺序栈的基本特点是后进先出。

import java.util.ArrayList;

public class ArrayStack {

    ArrayList<Integer> list = new ArrayList<>();

    public void push(int element) {
        list.add(element);
    }

    public int pop() {
        int lastIndex = list.size() - 1;
        int lastElement = list.get(lastIndex);
        list.remove(lastIndex);
        return lastElement;
    }
}

五、总结

本篇文章主要讲解了Java中的ArrayList集合,包括创建ArrayList、向ArrayList中添加元素、获取、修改、删除ArrayList中的元素、遍历ArrayList,以及ArrayList的性能分析。同时,本文还提供了两个示例,以演示ArrayList的常见用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 集合系列(二)ArrayList详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Mybatis批量更新三种方式的实现

    首先我们可以从三种方式的实现入手进行讲解。 方式一:使用foreach标签 使用foreach标签是MyBatis中批量更新的最常用也是最简单的方式。通过foreach标签,可以将多个更新操作一次性提交到数据库中,实现批量更新的效果。 具体实现步骤如下: 在mapper配置文件中定义批量更新的SQL语句,语句中要使用到foreach标签。 <updat…

    Java 2023年5月20日
    00
  • java实现折半排序算法

    Java实现折半排序算法 折半排序(Binary Insertion Sort)是插入排序的一种改进版本,与插入排序相同的是,该算法的平均时间复杂度也为O(n^2),但是折半排序的优势在于其最坏时间复杂度为O(n^2)。 1. 算法原理 折半排序的算法原理如下: 从第2个元素开始,依次将元素插入到已排序的序列中。 每次插入时使用折半查找的方式,找到插入元素应…

    Java 2023年5月19日
    00
  • Dreamweaver CS5更改代码颜色方法(可自定义)

    Dreamweaver CS5更改代码颜色方法(可自定义) 在 Dreamweaver CS5 中,要更改代码颜色的方法如下: 在 Dreamweaver 菜单栏中选择“编辑” – “首选项” – “代码颜色” 在弹出的“代码颜色”设置对话框中,可以看到各种不同元素的代码颜色设置,比如“关键字”、“属性值”、“注释”等等 要更改某个元素的代码颜色,只需要将鼠…

    Java 2023年6月15日
    00
  • SpringBoot自定义Starter与自动配置实现方法详解

    SpringBoot自定义Starter与自动配置实现方法详解 什么是SpringBoot Starter SpringBoot Starter是一种用于扩展SpringBoot框架功能的一种技术手段,它可以将应用程序中涉及到的依赖库集成到SpringBoot环境中,使得应用程序更加简单、灵活且易于扩展。 Starter的实现过程主要有自定义Starter和…

    Java 2023年5月20日
    00
  • Spring Security基于JWT实现SSO单点登录详解

    Spring Security基于JWT实现SSO单点登录详解 什么是单点登录(SSO)? 单点登录(SSO)指的是用户只需要一次登录,就可以访问多个应用系统。在传统的系统中,我们需要为每一个系统单独注册,单独登录,对于用户来说,这是一种不便。 JWT是什么? JWT(JSON Web Token)是一种用于身份验证的开放标准。它是由 IETF(Intern…

    Java 2023年5月20日
    00
  • 详解JAVA 反射机制

    详解JAVA 反射机制 什么是反射机制 反射机制是 Java 语言提供的一种能力,它允许本来在编译期无法访问的类的内部信息,在程序运行期可以获取到。使用反射机制,我们可以在程序运行时动态地获取类型信息、构造对象、访问字段和方法等。 反射机制的应用场景 设计灵活,可扩展性好。比如很多插件式的框架,允许用户开发自定义的模块,但是这些模块编译时是不确定的,只有在程…

    Java 2023年5月20日
    00
  • 使用spring的restTemplate注意点

    使用Spring的RestTemplate是在Java中向REST API发送HTTP请求的一种常见方法。它提供了许多方便的方法来处理HTTP请求和响应。使用RestTemplate时需要注意以下几点。 注意点一:配置RestTemplate的HttpClient RestTemplate的默认实现使用HttpURLConnection作为底层客户端,然而在…

    Java 2023年6月3日
    00
  • Spring quartz Job依赖注入使用详解

    Spring Quartz Job依赖注入使用详解 介绍 Spring框架提供了一个任务调度组件——Quartz。Quartz可用于在指定时间、日期执行任务或按规定时间间隔执行任务,比如定时备份、数据同步等任务。 在Quartz中定义任务的时候,我们可能需要依赖注入一些Spring管理的Bean,通过Spring支持的依赖注入特性,Quartz任务类很容易获…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部