sheng的学习笔记-Vector源码分析
概述
Vector底层也是数组,跟ArrayList很像(先看下ArrayList,再看Vector会很轻松),ArrayList可参考下文,并且由于效率低,已经被淘汰了,大概瞅瞅得了
sheng的学习笔记-ArrayList源码分析_coldstarry的博客-CSDN博客
差异的:
Vector是线程安全的,不过效率低,在add等位置加了synchronized
ArrayList是线程不安全的,效率高
底层是数组
初始化
默认申请10个元素的数组
新增元素
add中有synchronized(加锁),多线程有用,但会速度慢
另外如果不设置capacityIncrement,默认每次扩容两倍(ArrayList是1.5倍),但可以自己设置扩容的步长(初始化的时候作为参数可以传进去)
指定位置上新增数据,做内存挪移,把指定位置的元素往后挪,空出个位置。然后将新的元素插入到空位置上
删除元素
找到指定的位置,计算剩余的需要挪的位置,如果删除最后一个元素比较快,如果删除中间的元素要做内存挪移,然后把最后一个元素置空
查找元素
根据对象查找
跟ArrayList一样的配方,只是加了个锁
sheng的学习笔记-Vector源码分析相关推荐
- 循环神经网络(RNN, Recurrent Neural Networks)学习笔记:源码分析(一)
前面帖子给出了RNN的基础理论,里面也提到了神牛Mikolov,这个帖子就基于此牛开源出的一个语言建模工具箱(RNN Language Modeling Tookit)进行代码走读,会加速理解RNN算 ...
- c++imread 函数_OpenCV学习笔记与源码分析: imread( )函数
引言 imread()函数在opencv使用比较. imread()函数 声明: Mat imread(const string& filename, int flags); 这很标准的写法, ...
- TensorFlow学习笔记之源码分析(3)---- retrain.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py ...
- TensorFlow学习笔记之源码分析(3)---- retrain.py(转)
原文地址:http://blog.csdn.net/daydayup_668819/article/details/68060483 https://github.com/tensorflow/ten ...
- TensorFlow学习笔记之五——源码分析之最近算法
[python] view plaincopy import numpy as np import tensorflow as tf # Import MINST data import input_ ...
- FreeRTOS学习笔记---任务控制块源码分析
#define portSTACK_TYPE uint32_t #define portBASE_TYPE long typedef portSTACK_TYPE StackType_t; typed ...
- Java集合之Vector源码分析
概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面 ...
- Java设计模式学习以及底层源码分析
源码在分支master 工厂模式 把具体创建产品的细节封装起来,你要什么产品,我给你什么产品即可. 简单工厂模式 工厂方法模式 缓存层:抽象类 抽象工厂模式 缓存层是:接口 原型模式 问题: 原型模式 ...
- Licode入门学习:MediaStream源码分析(二)
Licode服务与启动过程分析 MediaStream源码分析(一) MediaStream源码分析(二) MediaStream源码分析(三) WebRtcConnection源码分析(一) Web ...
最新文章
- linux 中如何将文件粘贴到usr下的lib内,学会在Linux下GCC生成和使用静态库和动态库...
- python的none是什么-python中的none类型
- HTML的checkbox和radio的美化
- poj-2231(Moo Volume) 递推
- linux 权限掩码 umask
- 计算机动画制作 教学设计,《设置动画效果》教学设计
- 解决centos下sudo运行tshark,写入文件显示:Permission denied.
- linux下限制一个文件夹大小的方法
- Vue的computed(计算属性)使用实例之TodoList
- Byobu(tmux)的使用与定制
- Android开机画面显示
- NLPIR ICTCLAS2015分词系统的使用
- Antd design pro 网站favicon.ICO图标 网页LOGO图标 左侧边栏LOGO文字 默认登陆页面LOGO 页面Loading样式修改
- Altium_Designer17-PCB-如何重新定义板子外形
- CSS 文字背景水印
- 【springboot中jasypt-spring-boot-starter的使用】
- A Morden C++ —— C++11新特性指南
- 这就是波士顿动力第一款商用产品「机器狗」Spot
- 你的电脑是如何识别色图的?
- linux 串口连接交换机,怎么用串口线连接电脑和交换机 连接步骤教程