List(JDK1.7)(3)

Vector

实现了一个存储对象的增长数组。如同一个数组,它可以使用一个整型下标来访问元素。但是,vector的大小是可以根据需要增长或收缩的。

每个vector通过维护capacity和capacityIncrement来优化存储管理。capacity容量,总是至少和vector的size一样大,通常会更大一些,因为随着元素被添加到vector中,vector的存储按大小为capacityIncrement的块来增长。在插入大量元素之前,可以扩容,这减少了容量调整的次数。

不同于其他集合实现,vector是同步的。如果不需要一个线程安全的实现,推荐使用ArrayList代替Vector。

构造函数

【数组中的ArrayStoreException】

容量调整

Enumeration迭代(也有同步的Iterator和listIterator)

时间: 2024-10-16 12:35:19

List(JDK1.7)(3)的相关文章

HashMap源码分析(JDK1.8)

一.HashMap简介 HashMap是一种基于数组+链表+红黑树的数据结构,其中红黑树部分在JDK1.8后引入,当链表长度大于8的时候转换为红黑树. HashMap继承于AbstractMap(Map的骨架实现类),实现Map接口. HashMap因为采用hashCode的值存储,所以性能一般情况下为O(1).   HashMap最多只允许一条记录的键为null,允许多条记录的值为null. HashMap线程不安全,如在多线程环境下可以使用Collections工具类将其转换为线程安全,也可

javase基础回顾(一)ArrayList深入解析 解读ArrayList源代码(JDK1.8.0_92)

我们在学习这一块内容时需要注意的一个问题是 集合中存放的依然是对象的引用而不是对象本身. List接口扩展了Collection并声明存储一系列元素的类集的特性.使用一个基于零的下标,元素可以通过它们在列表中的位置被插入和访问.一个列表可以包含重复元素.List在集合中是一个比较重要的知识点也是在开发中最常用的. 我们都知道ArrayList是由数组实现的,但是和数组有很大区别的是随着向ArrayList中不断添加元素,其容量也自动增长,而数组声明好之后其容量就不会改变.想要探明其中的究竟探析其

Java---20---多线程:生产者和消费者2(JDK1.5升级版)

此篇文章写的是JDK1.5升级版的生产者和消费者. Java 升级之后的解决方法: Lock java.util.concurrent.locks 接口 Lock 所有已知实现类: ReentrantLock,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriteLock public interface Lock Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此实现允许更灵活的结构,可

java基础知识回顾之java Thread类学习(把)--java.util.concurrent.locks(JDK1.5)与synchronized异同讲解

看API文档介绍几个方法:  JDK1.5中提供了多线程的升级解决方案: 特点: 1.将同步synchronized显示的替换成Lock                    2.接口Condition:Condition替代了Object监视器方法(wait.notify.notifyAll),分别替换成了await(),signal() (唤醒一个等待线               程),signalAll() 唤醒多个线程.一个锁可以绑定多个condition对象,可以对应好几组wait,

Java安全机制之泛型(JDK1.5)

泛型,类型安全机制. 好处: 1.将运行时期出现问题ClassCastException转移到了编译时期,方便解决问题,减少运行时期的问题,有利于程序的健壮性. 2.避免了强制转换的麻烦 泛型格式: ArrayList<String> al = new ArrayList<String>(); 若增加Integer类型的数据,在编译的时期就会提示错误. 使用迭代器取值的时候,需要声明类型 示例代码: import java.util.*; class GenericDemo2 {

【图解JDK源码】HashMap的容量大小增长原理(JDK1.6/1.7/1.8)

1. 前言 HashMap的容量大小会根据其存储数据的数量多少而自动扩充,即当HashMap存储数据的数量到达一个阈值(threshold)时,再往里面增加数据,便可能会扩充HashMap的容量. 可能? 事实上,由于JDK版本的不同,其阈值(threshold)的默认大小也变得不同(主要是计算公式的改变),甚至连判断条件也变得不一样,所以如果说threshold = capacity * loadFactor(容量 * 负载因子)将不再绝对正确,甚至说超过阈值容量就会增长也不再绝对正确,下面就

Java 环境变量配置(jdk1.8)

由于今天电脑重装系统(Win10专业版),所有的环境配置都没了,所以随手更一下这篇虽然及其简单但是又有部分和我一样的小白连配置个jdk环境都有可能会出错的(以前就有遇到过,就是根据baidu里的一些教程配置的环境变量啊,怎么还是会出现没有配置成功呢?)接下来我就和大家一起搭建一次jdk环境,大神请路过,觉得这篇教程还可以,能用上的就请收藏一下以备后用,好了废话不多说,现在开始进入正题: 准备工具:JDK8u161 开发工具:Eclipse 去oracle官网下载jdk版本,现在jdk10已经出来

使用ArrayList时代码内部发生了什么(jdk1.7)?

前言 ArrayList(这里的ArrayList是基于jdk1.7)是在项目中经常使用的集合类,例如我们从数据库中查询出一组数据.这篇文章不去剖析它的继承和实现,只是让我们知道实例化及增删改查时它的内部代码是怎么实现的. public class TestList { @Test public void testArrayList(){ List<Integer> list = new ArrayList<>(); for (int i = 0; i < 12; i++)

ArrayList集合(JDK1.8)

简述 List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法. 常用子类  ?ArrayList介绍 1.数据结构 其底层的数据结构是数组,数组元素类型为Object类型,即可以存放所有类型数据. 2.源码分析   2.1类的继承关系 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Clonea

集合之HashSet(含JDK1.8源码分析)

一.前言 我们已经分析了List接口下的ArrayList和LinkedList,以及Map接口下的HashMap.LinkedHashMap.TreeMap,接下来看的是Set接口下HashSet和LinkedHashSet,其实在分析完了HashMap.LinkedHashMap之后,再来看HashSet和LinkedHashSet就会非常简单. 二.hashSet的数据结构 因为hashSet的底层是基于hashMap或linkedHashMap的(new hashSet的时候可以指定),