当前位置:   article > 正文

一篇文章带你彻底理解Java ArrayList数据结构详解_java中arraylist的数据结构

java中arraylist的数据结构

一篇文章带你彻底理解Java ArrayList数据结构详解

基本概念:

​ **之前创建数组的时候,需要声明提前声明数组的大小,**ArrayList是一个可以动态修改的数组,与普通数组的区别就是没有固定大小的限制,它会动态调整长度。

​ **ArrayList继承了AbstractList,并实现了List接口。**如下图:

img

**ArrayList 类位于 java.util 包中,**使用前需要引入它,语法格式如下:

import java.util.ArrayList; // 引入 ArrayList 类
  • 1

那么声明并且初始化的语法如下:

ArrayList<E> objectName =new ArrayList<>();  // 初始化
  • 1
  • E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。(PS:Java的数据类型分为俩种,基本数据类型(byte、char、short、int、float、double、long、boolean)和引用数据类型,对象、数组、包装类、枚举类、字符串等
  • objectName: 对象名。

ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

下面是具体的例子:

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();

        // 添加元素到列表末尾
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");

        // 修改元素
        fruits.set(1, "Mango");//set()返回之前在 index 位置的元素 。并且替换动态数组中的某元素:如果 index 值超出范围,则抛出 IndexOutOfBoundsException 异常。

        // 删除元素
        fruits.remove("Orange");//remove()如果传入索引值,则返回删除的元素。成功返回true,否则false。注意:如果指定的索引超出范围,则该方法将抛出 IndexOutOfBoundsException 异常。

        // 查找元素
        String fruit = fruits.get(0);//get(index)方法查找索引处的值

        // 遍历元素(方式一:使用 for 循环)
        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }

        // 遍历元素(方式二:使用迭代器)
        Iterator<String> iterator = fruits.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        // 遍历元素(方式三:使用 for-each 循环)
        for (String item : fruits) {
            System.out.println(item);
        }
        
        //获取ArrayList中的元素数量使用size()方法
        System.out.println(fruits.size());
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

按照示例代码中的顺序执行,输出结果如下:

Apple
Mango
  2
  • 1
  • 2
  • 3

​ 反思:通过我们上面的例子,我们实现了 ArrayList 的增加元素、修改元素、删除元素、查找元素和遍历元素的操作。

并且咱们使用不同的方式进行遍历ArrayList中的数据:
  • 通过索引使用 for 循环遍历、
  • 使用迭代器进行遍历
  • 使用 for-each 循环进行遍历。

根据需求选择适合的遍历方式来访问 ArrayList 中的元素。


ArrayList 排序

Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。

以下实例对字母进行排序:

import java.util.ArrayList;
import java.util.Collections;  // 引入 Collections 类

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Taobao");
        sites.add("Wiki");
        sites.add("Runoob");
        sites.add("Weibo");
        sites.add("Google");
        Collections.sort(sites);  // 字母排序
        for (String i : sites) {
            System.out.println(i);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

以上实例,执行输出结果为:

Google
Runoob
Taobao
Weibo
Wiki
  • 1
  • 2
  • 3
  • 4
  • 5

若是对数字进行排序:(默认从小到大)

import java.util.ArrayList;
import java.util.Collections;  // 引入 Collections 类

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<Integer> myNumbers = new ArrayList<Integer>();
        myNumbers.add(33);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(34);
        myNumbers.add(8);
        myNumbers.add(12);

        Collections.sort(myNumbers);  // 数字排序

        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

以上实例,执行输出结果为:

8
12
15
20
33
34
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Java ArrayList 方法

Java ArrayList 常用方法列表如下:

方法描述
add()将元素插入到指定位置的 arraylist 中
addAll()添加集合中的所有元素到 arraylist 中
clear()删除 arraylist 中的所有元素
clone()复制一份 arraylist
contains()判断元素是否在 arraylist
get()通过索引值获取 arraylist 中的元素
indexOf()返回 arraylist 中元素的索引值
removeAll()删除存在于指定集合中的 arraylist 里的所有元素
remove()删除 arraylist 里的单个元素
size()返回 arraylist 里元素数量
isEmpty()判断 arraylist 是否为空
subList()截取部分 arraylist 的元素
set()替换 arraylist 中指定索引的元素
sort()对 arraylist 元素进行排序
toArray()将 arraylist 转换为数组
toString()将 arraylist 转换为字符串
ensureCapacity()设置指定容量大小的 arraylist
lastIndexOf()返回指定元素在 arraylist 中最后一次出现的位置
retainAll()保留 arraylist 中在指定集合中也存在的那些元素
containsAll()查看 arraylist 是否包含指定集合中的所有元素
trimToSize()将 arraylist 中的容量调整为数组中的元素个数
removeRange()删除 arraylist 中指定索引之间存在的元素
replaceAll()将给定的操作内容替换掉数组中每一个元素
removeIf()删除所有满足特定条件的 arraylist 元素
forEach()遍历 arraylist 中每一个元素并执行特定操作

更多 API 方法可以查看:https://www.runoob.com/manual/jdk11api/java.base/java/util/ArrayList.html

结尾语:记录于2023年8月4号19时30分,以上仅为个人在[Java数据结构ArrayList—Java高级编程—菜鸟教程](Java ArrayList | 菜鸟教程 (runoob.com))的学习过程中遇到的问题,还有记录的个人想法,有错误欢迎指出,希望对您有帮助,感谢观看!如果可以的话,点点赞,点点关注

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号