首页 > 其他分享 >ArrayList/Vector/ListedList

ArrayList/Vector/ListedList

时间:2024-08-14 15:16:00浏览次数:3  
标签:Vector int ArrayList elementData ListedList newCapacity minCapacity

ArrayList:是数组数据结构,扩容是通过扩容数组。可快速访问其中一个元素或修改。

ListedList:是链表数据结构,可高效的实现中间元素修改/删除。但是访问没有数组高效。

vector:是强同步的ArrayList

 

ArrayList扩容步骤

1.判断申请的元素后,元素数量超过现有容量。

private void ensureExplicitCapacity(int minCapacity) {
    modCount++;

    // overflow-conscious code
    if (minCapacity - elementData.length > 0)
        grow(minCapacity);
}

2.申请1.5倍(一开始是10个元素)空间。

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);
}

3.拷贝数据到新的数组中

标签:Vector,int,ArrayList,elementData,ListedList,newCapacity,minCapacity
From: https://www.cnblogs.com/jichenghui/p/18359052

相关文章

  • 【C++ Allocator】 详解C++的空间配置器和vector的底层实现以及push_back()和empalce_
    空间配置器用于管理动态内存分配和释放,STL容器类(如std::vector,std::list,std::map等)都使用配置器来管理内存。它有非常重要的特点:将容器的内存开辟和对象构造分离开将容器的对象析构和内存释放分离开这样能够高效的插入元素以及删除元素vectorSTL中典型的容器vec......
  • 4-ArrayList
    ArrayList实现类(JDK1.7)//接口=实现类--->为了扩展性这样做--->因为可以Collectioncol=newLinkedList();Collectioncol=newArrayList();Listlist=newArrayList();//直接创建实现类对象ArrayListal=newArrayList();......
  • Vector day12
    packagecom.shujia.day13;importjava.util.Enumeration;importjava.util.Iterator;importjava.util.Vector;/*Collection:-List(有序【指的是存储和取出的顺序是一致的】且可以发生重复,且有索引的概念)-ArrayList:底层数据结构是数组,......
  • ArrayList集合及例题 day12
    packagecom.shujia.day13;importjava.util.ArrayList;importjava.util.Iterator;/*Collection:-List(有序【指的是存储和取出的顺序是一致的】且可以发生重复,且有索引的概念)-ArrayList:底层数据结构是数组,查询快,增删慢,线程不安......
  • 集合:(ArrayList)的插值和去重,包含(Iterator和listIterator)迭代器相关使用
    总结:去重用for循环,插值可用for循环和迭代器(可以方便在中间插值),如果要修改集合,就用listIterator,防止父类的Iterator没有add添加功能,也避免版本号不一致报错去重:用contains方法,确认新集合中是否存在旧值1、基本数据类型String去重publicclassArrayListQuChong{public......
  • 初始化二维vector
    这里是我遇到的一些对于二维vector容器初始化的一些问题的总结与记录,一共有一下四种情况,随时添加新的方式方法。初始化一个二维vector,行M,列N//初始化一个二维的matrix,行M,列N,且值为0vector<vector<int>>matrix(M,vector<int>(N));//等价于下面的vector<vector<......
  • C++标准模板库(STL)|容器|vector| queue|
    对STL进行总结,STL是standardtemplatelibrary的简写,是C++中的一个标准模板库,用于实现常用的数据结构和算法,它是C++程序员经常使用的一个工具箱。STL的主要目的是提高开发效率和代码质量,使得程序员可以更加便捷地完成常见的操作。里面包括:算法(algorithm)、容器(container)、仿函......
  • C++ char*类型与vector类型的相互转换
    char*类型与vector<char>类型的相互转换很多时候需要使用动态的字符串,但是char*难以完成相应的扩容操作,而动态数组vector则可以简单地完成,结合二者特性就可以完成动态字符串,同时,也需要二者类型的相互转换:char*转vector<char> vector<char>buffer(ch,ch+4);vector<cha......
  • ArrayList和LinkList实现的比较
    一、ArrayList和LinkList实现的比较1.使用get()获取元素1.1ArrayList.get()​ 如果希望使用ArrayList的get(intindex)方法获取元素,实现可以简单地将这项任务委托给其内部数组:publicEget(intindex){rangeCheck(index);returnelementData(index);}​ 当然,......
  • Java集合:Collection and Map;ArrayList;LinkList;HashSet;TreeSet;HashMap;TreeMap;Iterator:
        集合介绍:                        是一组变量类型(容器),跟数组很像。一,引用集合的原因(必要性):                  A:数组的空间长度固定,一旦确定不可以更改。多了浪费,少了报错。          B:使用数......