概述

Vector底层也是数组,跟ArrayList很像(先看下ArrayList,再看Vector会很轻松),ArrayList可参考下文,并且由于效率低,已经被淘汰了,大概瞅瞅得了

sheng的学习笔记-ArrayList源码分析_coldstarry的博客-CSDN博客

差异的:

Vector是线程安全的,不过效率低,在add等位置加了synchronized

ArrayList是线程不安全的,效率高

底层是数组

初始化

默认申请10个元素的数组

 新增元素

add中有synchronized(加锁),多线程有用,但会速度慢

另外如果不设置capacityIncrement,默认每次扩容两倍(ArrayList是1.5倍),但可以自己设置扩容的步长(初始化的时候作为参数可以传进去)

指定位置上新增数据,做内存挪移,把指定位置的元素往后挪,空出个位置。然后将新的元素插入到空位置上

删除元素

找到指定的位置,计算剩余的需要挪的位置,如果删除最后一个元素比较快,如果删除中间的元素要做内存挪移,然后把最后一个元素置空

查找元素

根据对象查找

跟ArrayList一样的配方,只是加了个锁

sheng的学习笔记-Vector源码分析相关推荐

  1. 循环神经网络(RNN, Recurrent Neural Networks)学习笔记:源码分析(一)

    前面帖子给出了RNN的基础理论,里面也提到了神牛Mikolov,这个帖子就基于此牛开源出的一个语言建模工具箱(RNN Language Modeling Tookit)进行代码走读,会加速理解RNN算 ...

  2. c++imread 函数_OpenCV学习笔记与源码分析: imread( )函数

    引言 imread()函数在opencv使用比较. imread()函数 声明: Mat imread(const string& filename, int flags); 这很标准的写法, ...

  3. TensorFlow学习笔记之源码分析(3)---- retrain.py

    https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py ...

  4. TensorFlow学习笔记之源码分析(3)---- retrain.py(转)

    原文地址:http://blog.csdn.net/daydayup_668819/article/details/68060483 https://github.com/tensorflow/ten ...

  5. TensorFlow学习笔记之五——源码分析之最近算法

    [python] view plaincopy import numpy as np import tensorflow as tf # Import MINST data import input_ ...

  6. FreeRTOS学习笔记---任务控制块源码分析

    #define portSTACK_TYPE uint32_t #define portBASE_TYPE long typedef portSTACK_TYPE StackType_t; typed ...

  7. Java集合之Vector源码分析

    概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面 ...

  8. Java设计模式学习以及底层源码分析

    源码在分支master 工厂模式 把具体创建产品的细节封装起来,你要什么产品,我给你什么产品即可. 简单工厂模式 工厂方法模式 缓存层:抽象类 抽象工厂模式 缓存层是:接口 原型模式 问题: 原型模式 ...

  9. Licode入门学习:MediaStream源码分析(二)

    Licode服务与启动过程分析 MediaStream源码分析(一) MediaStream源码分析(二) MediaStream源码分析(三) WebRtcConnection源码分析(一) Web ...

最新文章

  1. linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...
  2. python的none是什么-python中的none类型
  3. HTML的checkbox和radio的美化
  4. poj-2231(Moo Volume) 递推
  5. linux 权限掩码 umask
  6. 计算机动画制作 教学设计,《设置动画效果》教学设计
  7. 解决centos下sudo运行tshark,写入文件显示:Permission denied.
  8. linux下限制一个文件夹大小的方法
  9. Vue的computed(计算属性)使用实例之TodoList
  10. Byobu(tmux)的使用与定制
  11. Android开机画面显示
  12. NLPIR ICTCLAS2015分词系统的使用
  13. Antd design pro 网站favicon.ICO图标 网页LOGO图标 左侧边栏LOGO文字 默认登陆页面LOGO 页面Loading样式修改
  14. Altium_Designer17-PCB-如何重新定义板子外形
  15. CSS 文字背景水印
  16. 【springboot中jasypt-spring-boot-starter的使用】
  17. A Morden C++ —— C++11新特性指南
  18. 这就是波士顿动力第一款商用产品「机器狗」Spot
  19. 你的电脑是如何识别色图的?
  20. linux 串口连接交换机,怎么用串口线连接电脑和交换机 连接步骤教程

热门文章

  1. 机器学习项目(一)——垃圾邮件的过滤技术
  2. Android设计模式详解之解释器模式
  3. 漫谈云计算网络(一):云计算网络技术介绍
  4. C++图形化编程(时钟案例)
  5. 企业如何做私域流量社群运营规划方案sop流程计划表格
  6. m3u8文件格式讲解,Python解析m3u8文件,并获取在线地址
  7. 谷歌拼音输入法突然变繁体怎么办?
  8. 《Single Image Depth Prediction with Wavelet Decomposition》论文笔记
  9. 易语言一键选中取消选择列表框源码
  10. 语法转换_【语法专题】句型转换(上)