Java 集合系列(二)ArrayList详解

yizhihongxing

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日

相关文章

  • Java 事务详解及简单应用实例

    关于“Java 事务详解及简单应用实例”的完整攻略,下面我撰写一些内容,希望能够对您有所帮助。 Java 事务详解及简单应用实例 什么是事务 事务(Transaction)是指一个或多个操作组成的一个不可分割的执行单元。事务是数据库操作中的一个重要概念,它使得用户可以将多个操作看作一个整体完成,而不必担心它们之间的相互影响。 在Java中,事务必须在支持事务…

    Java 2023年5月19日
    00
  • 浅谈javaSE 面向对象(Object类toString)

    浅谈JavaSE面向对象(Object类toString) 什么是面向对象? 面向对象(OOP)是一种计算机编程方法,它基于对象、类和封装等概念。在面向对象编程中,使用对象来表示现实世界的实体,并使用类来描述对象的属性和行为。封装则是指:将数据和方法组合成类并隐藏其实现细节的过程。 Object类和toString方法 在Java中,所有的对象都继承自Obj…

    Java 2023年5月26日
    00
  • 详解SpringBoot中的统一异常处理

    下面我将为你详细讲解“详解SpringBoot中的统一异常处理”的完整攻略。 什么是SpringBoot中的统一异常处理 在SpringBoot中,我们经常需要对抛出的异常进行统一处理。如果我们每个地方都去捕捉异常,并进行相应处理,那么代码量会非常大。此时,我们可以使用SpringBoot中的统一异常处理,将所有异常集中处理,大大减少了代码量,也方便了我们对…

    Java 2023年5月27日
    00
  • img的src地址是一个请求的方式来显示图片方法

    下面是关于“img的src地址是一个请求的方式来显示图片方法”的详细讲解: 标准的img标签 在HTML中,我们使用img标签来显示图片。下面是一个标准的img标签示例: <img src="path/to/image.jpg" alt="图片说明" /> 其中,src属性指定了图片的地址,alt属性用于描…

    Java 2023年6月15日
    00
  • java实现把两个有序数组合并到一个数组的实例

    下面是Java实现把两个有序数组合并到一个数组的完整攻略。 1. 题目说明 有两个已排序的整数数组nums1和nums2,将nums2合并到nums1中,使得nums1成为一个有序数组。 注意: nums1和nums2的初始元素数量分别为m和n。 nums1的长度足以容纳m+n个元素。 2. 思路分析 根据题目要求,我们需要将nums2中的所有元素按顺序插入…

    Java 2023年5月26日
    00
  • java删除数组中的某一个元素的方法

    下面提供详细的“Java删除数组中的某一个元素的方法”的攻略。 1. 使用System.arraycopy方法删除数组中的元素 System.arraycopy方法能够在保持原数组中其他元素未变的前提下,将需要删除的元素移除,从而实现删除数组中某一元素的目的。 下面是该方式的代码示例: public static void main(String[] arg…

    Java 2023年5月26日
    00
  • Thinkphp5微信小程序获取用户信息接口的实例详解

    Thinkphp5微信小程序获取用户信息接口的实例详解 介绍 本文将详细讲解如何使用Thinkphp5框架开发微信小程序并获取用户信息,包括以下内容: 如何配置微信小程序的后台接口地址 如何在小程序中调用接口获取用户信息 如何在后台使用Thinkphp5框架编写接口代码 配置微信小程序后台接口地址 在微信小程序开发过程中,我们需要配置小程序的后台接口地址,在…

    Java 2023年5月23日
    00
  • springmvc字符编码过滤器CharacterEncodingFilter的使用

    当我们使用Spring MVC开发Web应用时,可能会发现在处理请求参数时存在中文乱码的问题,这时候我们需要使用字符编码过滤器(CharacterEncodingFilter)来解决这个问题。 以下是使用Spring MVC中字符编码过滤器的步骤: 步骤一:添加依赖项 首先,在项目的pom.xml文件中添加以下依赖项: <dependency> …

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