当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮 今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。感兴趣的朋友跟随小编一起看看吧 立即下载

前言

今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。

对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都要有足够的了解。

ArrayList

ArrayList是List接口的一个实现类,底层是基于数组实现的存储结构,可以用于装载数据,数据都是存放到一个数组变量中,

transient Object[] elementData;

transient是一个关键字,它的作用可以总结为一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。 你可能会觉得奇怪,ArrayList可以被序列化的啊,源码可是实现了java.io.Serializable接口啊,为什么数组变量还要用transient定义呢?

别急,关于这个问题,我们后面会讨论到,不卖个关子,你们怎么会看到最后,然后给我点在看呢?

当我们新建一个实例时,ArrayList会默认帮我们初始化数组的大小为10

/**
 * Default initial capacity.
 */
private static final int DEFAULT_CAPACITY = 10;

但请注意,这个只是数组的容量大小,并不是List真正的大小,List的大小应该由存储数据的数量决定,在源码中,获取真实的容量其实是用一个变量size来表示,

private int size;

在源码中,数据默认是从数组的第一个索引开始存储的,当我们添加数据时,ArrayList会把数据填充到上一个索引的后面去,所以,ArrayList的数据都是有序排列的。而且,由于ArrayList本身是基于数组存储,所以查询的时候只需要根据索引下标就可以找到对于的元素,查询性能非常的高,这也是我们非常青睐ArrayList的最重要的原因。

但是,数组的容量是确定的啊,如果要存储的数据大小超过了数组大小,那不就有数组越界的问题?

关于这点,我们不用担心,ArrayList帮我们做了动态扩容的处理,如果发现新增数据后,List的大小已经超过数组的容量的话,就会新增一个为原来1.5倍容量的新数组,然后把原数组的数据原封不动的复制到新数组中,再把新数组赋值给原来的数组对象就完成了。

扩容之后,数组的容量足够了,就可以正常新增数据了。

除此之外,ArrayList提供支持指定index新增的方法,就是可以把数据插入到设定的索引下标,比如说我想把元素4插入到3后面的位置,也就是现在5所在的地方,

插入数据的时候,ArrayList的操作是先把3后面的数组全部复制一遍,然后将这部分数据往后移动一位,其实就是逐个赋值给后移一位的索引位置,然后3后面就可以空出一个位置,把4放入就完成了插入数据的操作了

删除的时候也是一样,指定index,然后把后面的数据拷贝一份,并且向前移动,这样原来index位置的数据就删除了。

到这里我们也不难发现,这种基于数组的查询虽然高效,但增删数据的时候却很耗性能,因为每增删一个元素就要移动对应index后面的所有元素,数据量少点还无所谓,但如果存储上千上万的数据就很吃力了,所以,如果是频繁增删的情况,不建议用ArrayList。

既然ArrayList不建议用的话,这种情况下有没有其他的集合可用呢?

当然有啊,像我这样的暖男肯定是第一时间告诉你们的,这就引出了我们下面要说的LinkedList。

LinkedList

LinkedList 是基于双向链表实现的,不需要指定初始容量,链表中任何一个存储单元都可以通过向前或者向后的指针获取到前面或者后面的存储单元。在 LinkedList 的源码中,其存储单元用一个Node类表示:

private static class Node<E> {
    E item;
    Node<E> next;       
    Node<E> prev;

    Node(Node<E> prev, E element, Node<E> next) {
        this.item = element;
        this.next = next;
        this.prev = prev;
    }
}

Node中包含了三个成员,分别是存储数据的item,指向前一个存储单元的点 prev 和指向后一个存储单元的节点 next ,通过这两个节点就可以关联前后的节点,组装成为链表的结构,

因为有保存前后节点的地址,LinkedList增删数据的时候不需要像ArrayList那样移动整片的数据,只需要通过引用指定index位置前后的两个节点即可,比如我们要在李白和韩信之间插入孙悟空的节点,只需要像这样处理下节点之间的指向地址:

删除数据也是同样原理,只需要改变index位置前后两个节点的指向地址即可。

这样的链表结构使得LinkedList能非常高效的增删数据,在频繁增删的情景下能很好的使用,但不足之处也是有的。

虽然增删数据很快,但查询就不怎么样了,LinkedList是基于双向链表存储的,当查询对应index位置的数据时,会先计算链表总长度一半的值,判读index是在这个值的左边还是右边,然后决定从头结点还是从尾结点开始遍历,

Node<E> node(int index) {
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }

虽然根据index位置做了查询优化,但依然会有遍历一半链表长度的情况,如果是数据量非常多的话,这样的查询无疑是非常慢的。

这也是LinkedList最无奈的地方,鱼和熊掌不可兼得,我们既想查的快,又想增删快,这样的好事怎么可能都让我们遇到呢?所以,一般建议LinkedList使用于增删多,查询少的情景。

除此之外,LinkedList对内存的占用也是比较大的,毕竟每个Node都维护着前后指向地址的节点,数据量大的话会占用不少内存空间。

两者哪个更占空间?

讲到这,你是不是对标题的那个问题成竹在胸了?

下次有面试官问你,ArrayList和LinkedList哪个更占空间时,你就可以信誓旦旦的说,LinkedList更占空间,我看了薛大佬的文章,肯定不会错。说完你就可以安心坐着,等待面试官露出满意的笑容,告诉你通过面试的消息,成功拿下offer指日可待。

如果你真的这么答的话,我也相信面试官一定会被你的回答所征服,他听完一定会点点头,嘴角开始上扬,然后笑容满面的告诉你,

感谢你今天过来面试,你可以回去等通知了。。。。

哈哈,开个玩笑,不凑多点字可不是我的风格。

言归正传,表面上看,LinkedList的Node存储结构似乎更占空间,但别忘了前面介绍ArrayList扩容的时候,它会默认把数组的容量扩大到原来的1.5倍的,如果你只添加一个元素的话,那么会有将近原来一半大小的数组空间被浪费了,如果原先数组很大的话,那么这部分空间的浪费也是不少的,

所以,如果数据量很大又在实时添加数据的情况下,ArrayList占用的空间不一定会比LinkedList空间小,这样的回答就显得谨慎些了,听上去也更加让人容易认同,但你以为这样回答就完美了吗?非也

还记得我前面说的那个transient变量吗?它的作用已经说了,不想序列化的对象就可以用它来修饰,用transient修饰elementData意味着我不希望elementData数组被序列化。为什么要这么做呢?

这是因为序列化ArrayList的时候,ArrayList里面的elementData,也就是数组未必是满的,比方说elementData有10的大小,但是我只用了其中的3个,那么是否有必要序列化整个elementData呢? 显然没有这个必要,因此ArrayList中重写了writeObject方法:

private void writeObject(java.io.ObjectOutputStream s)
    throws java.io.IOException{
    // Write out element count, and any hidden stuff
    int expectedModCount = modCount;
    s.defaultWriteObject();

    // Write out size as capacity for behavioural compatibility with clone()
    s.writeInt(size);

    // Write out all elements in the proper order.
    for (int i=0; i<size; i++) {
        s.writeObject(elementData[i]);
    }

    if (modCount != expectedModCount) {
        throw new ConcurrentModificationException();
    }
}

每次序列化的时候调用这个方法,先调用defaultWriteObject()方法序列化ArrayList中的非transient元素,elementData这个数组对象不去序列化它,而是遍历elementData,只序列化数组里面有数据的元素,这样一来,就可以加快序列化的速度,还能够减少空间的开销。

加上这个知识点后,我们对上面那个问题就可以有更加全面的回答了,如果你下次也遇到这个问题的话,你可以参考一下我的说法:

一般情况下,LinkedList的占用空间更大,因为每个节点要维护指向前后地址的两个节点,但也不是绝对,如果刚好数据量超过ArrayList默认的临时值时,ArrayList占用的空间也是不小的,因为扩容的原因会浪费将近原来数组一半的容量,不过,因为ArrayList的数组变量是用transient关键字修饰的,如果集合本身需要做序列化操作的话,ArrayList这部分多余的空间不会被序列化。

怎么样,这样的回答是不是更加的说服力,不仅更加全面,还可能会给面试官留下好印象,让他觉得你是个有自己思考的求职者,说不定当场就让你面试通过了呢。就冲这点,你们是不是应该给我点个赞啊,哈哈。

Android AI Agent集成实战:架构设计与自动化技能开发 AI Agent(人工智能代理)是一种能够感知环境、自主规划并执行任务以达成目标的软件实体。其核心原理在于结合大语言模型的推理能力与工具调用(Tool Calling)技术,使应用从被动响应转向主动服务。在移动开发领域,这项技术的价值在于为应用注入“智能大脑”,实现跨应用自动化与个性化交互,从而显著提升用户体验和操作效率。具体到Android平台,其应用场景广泛,例如自动填写表单、智能聊天辅助、个性化工作流优化等。本文聚焦于Android AI Agent的工程化落地,深入探讨了如何利用Accessibil 阅读详情

相关推荐

Win11家庭版如何让Win+R运行CMD默认管理员权限?3种方法实测有效

本文针对Win11家庭版用户,实测了三种让Win+R运行CMD默认获取管理员权限的有效方法。通过分析UAC机制与家庭版功能限制,详细介绍了注册表编辑、快捷方式创建与任务计划程序三种方案的原理、步骤与风险对比,帮助用户根据安全与效率需求选择最佳方案,实现一键高效管理。

sat99的博客 1266

请你简单介绍一下ArrayList和LinkedList的区别及大数据量情况下的插入效率对比

请你简单介绍一下ArrayList和LinkedList的区别 ArrayList采用数组实现的,查找元素的效率比LinkedList高。 LinkedList采用双线链表实现,插入和删除的效率比ArrayList要高。 如果一直在list的尾部添加元素,用哪种效率更高? 当插入的数据一直是小于千万级的时候,大部分是LinkedList效率高,而当数据量大于千万级时,就会出现Arra...

学亮编程手记 2202

反激电源反馈环路设计:UC3842的FB脚与COMP脚接法对比与选型

在开关电源设计中,PWM控制器与光耦的反馈环路接法直接影响系统稳定性与动态响应。UC3842作为经典电流模式控制器,其FB脚和COMP脚分别对应内部误差放大器的输入与输出,决定了环路补偿由内部还是外部承担。FB脚接法利用内部基准和运放,设计简单、成本低,适合小功率适配器;COMP脚接法旁路内部运放,补偿网络外置,动态响应快、精度高,适合中大功率工业电源。理解两种接法的原理与差异,有助于在反激电源设计中优化环路补偿,提升负载调整率和批量一致性。

weixin_31887307的博客 316

ArrayList与LinkedList连环炮问懵逼

这是从网上查找然后整理的,感觉还不错,如有冒犯请谅解! 说说ArrayList与LinkedList? ArrayList的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。LinkedList的查询效率低,但是增删效率很高,适用于增删动作的比较频繁,查询次数较少的元素管理集合。ArrayList,LinkedList都是线程不安全的。 为什么ArrayList查询比LinkedList快? ArrayList从原理上就是数据结构中的数组,也就是内存中一...

JIANGZSHENG的博客 287

基于TL431与光耦的电压反馈环路优化设计实战

本文深入探讨了基于TL431与光耦的电压反馈环路优化设计实战。文章从理解这对“黄金搭档”的工作原理入手,详细拆解了电压采样电阻网络、偏置电路、光耦工作点设置以及动态补偿网络的设计心法与计算步骤。重点分享了如何通过RC补偿网络调试,确保环路在各种负载下稳定可靠,并提供了关键的实战避坑指南,帮助工程师解决电源设计中常见的振荡、噪声及可靠性问题。

nginx7reverse的博客 776

fins协议握手信号服务器响应,欧姆龙FinsTCP与FinsUDP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析附含报文模拟器等...

前言 – Fins欧姆龙这个协议网上极少有相关的模拟器、Tcp的这一块倒是有但是Udp的基本都是不可用1、 Fins协议结构也很简单 协议分为两种 一种tcp一种udp2、 Tcp比Udp的报文会多一层tcp的head头部3、 Udp回应报文在Wireshark中是解析不到(因为他按照UDP的格式去解那指定是解不到)好长时间没有更新过博客了、也比较懒= = 。一、Read(TCP)发包那么这个就很...

weixin_32491317的博客 4436

ArrayList和LinkedList空间占用问题

1.ArraList是实现了java.io.Serializable接口的,按理说是要在网络传输之间序列 化的. 2.数据存放在 transient Object[] elementData. transient关键字一句话说明含义:将不需要序列化的变量声明为,当序列化对象的时候,这个属性将不会被序列化. 3.ArrayList 实现 Serializable接口 但是储存数据的又被transitent修饰是为什么? 4.当new(initial)一个ArrayList的时候默认的size是10(如果没有指

weixin_47933000的博客 1672

【5G核心网】Packet Forwarding Model 数据包转发模型

CP 通过建立,修改,删除 PFCP 会话上下文,以及通过为每个 PFCP 会话赏析哪问提供 PDR FAR QER URR BAR,来控制 UP 面的数据包处理。 每一个 PDR 都包含 PDI(Packet Detection Information,包探测信息),一个或多个字段,与输入数据包进行匹配,并可能与以下规则相关联,从而提供了适用于与 PDI 匹配的数据包的指令集: - One FAR(包含了处理数据包的相关指令) an Apply Act...

zhonglinzhang 1万+

ArrayList vs LinkedList 空间占用

空间占用上,ArrayList完胜 看下两者的内存占用图 这三个图,横轴是list长度,纵轴是内存占用值。两条蓝线是LinkedList,两条红线是ArrayList,可以看到,LinkedList的空间占用,要远超ArrayList。LinkedList的线更陡,随着List长度的扩大,所占用的空间要比同长度的ArrayList大得多。 转载于:https://www.cnblog...

weixin_30828379的博客 590

halcon C++编程 第4讲 HObject/HImage Mat相互转换(tcy)

网上有很多相互转换程序,但并不知那个正确,本文对相互转换后的结果和原对象比较是否相同判断转换是否正确。经测试ok.本文包括转换代码及测试是否相同。 1.转换程序: /************************************ HObject转为Mat:time:2021/3/16 V1.0 *************************************/ cv::Mat HalconClass::HObjectToMat(const HalconCpp::HObject&..

tcy-阿春 4929

爬虫法律风险与合规边界

爬虫技术的法律边界正在快速收紧。从2017年上海晟品案开启爬虫入刑先河,到2025年Cloudflare区块链溯源技术将违规行为与企业主体永久绑定,合规已从"可选项"变为"必选项"。技术团队需要建立三层防御体系法律合规层:法律适用判定、授权管理、合同审查、隐私政策;技术控制层:访问控制、数据加密、匿名化、审计日志、监控告警;组织管理层:DPO任命、培训体系、应急响应、合规审计、绩效考核。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1160

Java 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

前言 今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。 对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都要有足够的了解。 ArrayList ArrayList是List接口的一个实现类,底层是基于数组实现的存储

qq_40877709的博客 344

【Java面试题汇总】JVM篇(2026版)

JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优

种一棵树最好的时间是十年前,其次是现在 3万+

arraylist 初始化_当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

前言今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都...

weixin_39709979的博客 84

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

arraylist 初始化_当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮...

(给ImportNew加星标,提高Java技能)前言今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,...

weixin_39973410的博客 78

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android 计算list占用的空间大小_当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮...

前言今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都...

weixin_31710835的博客 286

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

arraylist 后往前遍历_当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮...

前言今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都...

weixin_35794740的博客 108

某团技术拷问:ArrayList 和 LinkedList 哪个更占空间?

HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人。看他简历,从 JVM、MySQL、Redis,再到悲观锁、乐观锁一个都不缺,并发编程、分布式也都接触过,像是个实力派!着急用人...

方志朋的博客 194

android 计算list占用的空间大小_面试官问ArrayList和LinkedList哪个更占空间,这么答让他眼前一亮...

前言今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的最多的工具类了,也是面试中几乎必问的,LinkedList可能用的少点,但大多数的面试也会有所涉及,尤其是关于这两者的比较可以说是家常便饭,所以,无论从使用上还是在面试的准备上,对于这两个类的知识点我们都...

weixin_39773817的博客 411

ArrayList与LinkedList深度对比:从数据结构原理到Java实战选型

在Java集合框架中,List接口的实现选择是开发中的基础决策。数据结构决定了性能特征:数组支持O(1)的随机访问,因其内存连续,CPU缓存友好;链表则通过节点引用实现O(1)的头部增删,牺牲了连续内存的访问效率。理解这种时空权衡的技术价值,在于能根据具体场景优化程序性能,例如在高频查询的缓存系统或需要频繁头部操作的LRU队列中做出合理选择。本文通过源码分析和性能实测,深入探讨了ArrayList的动态扩容机制与LinkedList的节点操作,并结合内存模型与工程实践,为开发者在实际应用如分页查询、队列实现

weixin_29243279的博客 330

Java基础面试之集合的选择(ArrayList和LinkedList)

首先放上一般的结论: ArrayList的底层实现是数组,数组的特点是查询快,增删慢 LinkedList的底层实现是链表, 链表的特点是查询慢增删快 那么问题来了, 这么简单的一个知识点, 怎么让面试官觉得你跟别人不一样. 1.分析下数组为什么查询快, 增删慢? 数组创建时需要一块连续的内存空间, 数组支持随机访问, 所以查询快;增删慢也不是说所有的增删慢,为什么这样说, 要从数组增删的原理来讲(增加的话, 如果是把插入位置及其后面的位置的元素都往后移一位, 然后把要增加的元素放入对应的位置, 删除也是

m0_50578062的博客 185

Java面试常见误区与正确技术理解

在Java技术面试中,对核心概念的准确理解至关重要。从JVM内存模型到集合框架,从并发编程到系统设计,每个技术点都有其底层原理和适用场景。以ArrayList和LinkedList为例,前者基于动态数组实现随机访问O(1)但插入删除O(n),后者基于双向链表实现插入删除O(1)但随机访问O(n),这种数据结构差异直接影响实际应用性能。在并发编程中,synchronized和volatile的关键区别在于前者保证原子性和可见性而后者仅保证可见性,理解这些原理才能正确应用于高并发场景。扎实掌握这些基础概念,结合

weixin_32183107的博客 298

Java八股文面试核心解析与高效记忆法

Java面试中的八股文考察是开发者必须掌握的基础技能,尤其在JVM、并发编程和Spring框架等核心领域。理解JVM内存模型、ConcurrentHashMap的演进原理以及Spring Bean的生命周期,不仅能帮助开发者应对技术面试,更能提升实际工程能力。随着云原生和分布式系统的普及,面试考点也在升级,如K8s优雅停机和Seata的AT模式应用。通过脑图记忆法和错题本技巧,可以有效掌握这些知识点,避免过度背诵和原理与实践脱节的常见问题。

weixin_30905981的博客 395

Java面试题库详解:原理、源码与工程实践

Java面试准备需要深入理解技术原理而非机械记忆。从JVM内存模型到并发编程,掌握底层机制如CAS、AQS等能更好应对技术考察。HashMap扩容、动态代理性能优化等高频考点,往往涉及数据结构与算法设计思想。工程实践中,合理应用ThreadLocal、CompletableFuture等工具可提升系统性能。本套资料通过源码解析和场景化案例,帮助开发者建立从理论到实践的完整知识链,特别涵盖Java 8+特性与分布式场景下的设计考量。

weixin_34221276的博客 365
上一篇: rm -rf无法删除文件解决方法
下一篇: Maven中的GroupID和ArtifactID指的是什么?
Chery Qi
博客等级 码龄10年 154粉丝 68原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值