温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java List的容量如何扩展

发布时间:2025-01-21 18:06:31 来源:亿速云 阅读:130 作者:小樊 栏目:编程语言

在Java中,List是一个接口,它表示一个有序的元素集合。List接口的实现类有很多,其中最常用的是ArrayList和LinkedList。这里我将为您介绍这两个实现类的容量扩展方式。

  1. ArrayList

ArrayList是一个动态数组,其内部使用一个Object数组来存储元素。当向ArrayList中添加元素时,如果数组容量不足以容纳新元素,ArrayList会自动扩展其容量。扩展容量的过程如下:

  • 首先,计算新的容量。新的容量通常是当前容量的1.5倍(具体计算方法为:newCapacity = oldCapacity + (oldCapacity >> 1))。
  • 创建一个新的数组,其容量为新的容量。
  • 将旧数组中的元素复制到新数组中。
  • 将ArrayList的底层数组引用指向新数组。

以下是一个简单的示例:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println("Initial capacity: " + list.capacity()); // 输出初始容量

        for (int i = 0; i < 10; i++) {
            list.add("Element " + i);
            System.out.println("Current capacity: " + list.capacity()); // 输出当前容量
        }
    }
}
  1. LinkedList

LinkedList是一个双向链表,其内部使用一个Node对象数组来存储元素。每个Node对象包含一个数据域和一个指向下一个节点的引用。由于LinkedList是基于链表实现的,因此它不需要预先分配固定大小的数组来存储元素。当向LinkedList中添加元素时,只需要创建一个新的Node对象并将其添加到链表的末尾即可。

以下是一个简单的示例:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        System.out.println("Initial capacity: " + list.size()); // 输出初始容量(注意:LinkedList没有容量概念,这里输出的是大小)

        for (int i = 0; i < 10; i++) {
            list.add("Element " + i);
            System.out.println("Current size: " + list.size()); // 输出当前大小(注意:LinkedList没有容量概念,这里输出的是大小)
        }
    }
}

总结:

  • ArrayList是一个动态数组,其容量会自动扩展。当需要扩展容量时,ArrayList会创建一个新的数组,其容量为当前容量的1.5倍,并将旧数组中的元素复制到新数组中。
  • LinkedList是一个双向链表,它不需要预先分配固定大小的数组来存储元素。当向LinkedList中添加元素时,只需要创建一个新的Node对象并将其添加到链表的末尾即可。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI