Java容器:ArrayList

一、概述

ArrayList是一个可以自动扩容的数组,随机访问的速度很快(时间复杂度为O(1)),但是插入和移除元素的速度较慢

二、源码分析

1. add()方法:

在这里插入图片描述

public boolean add(E e) {
    // 容量+1
    ensureCapacityInternal(size + 1);  // Increments modCount!!
    // 将新元素添加到数组的最后
    elementData[size++] = e;
    return true;
}

private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    // 将老数组的元素拷贝到新数组
    elementData = Arrays.copyOf(elementData, newCapacity);
}

2. remove方法

public E remove(int index) {
    // 检查是否出界
    rangeCheck(index);

    modCount++;
    E oldValue = elementData(index);

    int numMoved = size - index - 1;
    // 缩容,拷贝
    if (numMoved > 0)
        System.arraycopy(elementData, index+1, elementData, index,
                         numMoved);
    elementData[--size] = null; // clear to let GC do its work

    return oldValue;
}

add方法和remove方法在添加或删除元素的时候需要扩容或缩容并且将所有的元素依次移入新的数组中,时间复杂度为O(n),所以ArrayList在插入和删除元素时较慢

2. get()方法

public E get(int index) {
    // 判断是否出界
    rangeCheck(index);
    // 返回对应位置的元素
    return elementData(index);
}

三、示例

1. addAll()方法:

ArrayList<String> list_1 = new ArrayList<String>();
for (int i = 0; i < 3; i++) {
	list_1.add("No." + i);
}
System.out.println("list_1: " + list_1);
ArrayList<String> list_2 = new ArrayList<String>();
for (int i = 3; i < 6; i++) {
	list_2.add("No." + i);
}
System.out.println("list_2: " + list_2);
list_1.addAll(list_2);
System.out.println("list_1: " + list_1);

输出:

list_1: [No.0, No.1, No.2]
list_2: [No.3, No.4, No.5]
list_1: [No.0, No.1, No.2, No.3, No.4, No.5]

2. 使用ListIterator遍历

使用ListIterator遍历:ListIterator可以向前或者向后去遍历,并且可以从指定位置开始遍历

ArrayList<String> list_1 = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
    list_1.add("No." + i);
}
ListIterator<String> iterator = list_1.listIterator(3);
while (iterator.hasPrevious()){
    System.out.println("prev: " + iterator.previousIndex() + ": " + iterator.previous());
}

while (iterator.hasNext()){
    System.out.println("next: " + iterator.nextIndex() + ": " + iterator.next());
}
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值