文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中Vector的作用是什么

2023-05-31 00:35

关注

本篇文章为大家展示了Java中Vector的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Vector实现了AbstractList抽象类和List接口,和ArrayList一样是基于Array存储的

Vector 是线程安全的,在大多数方法上存在synchronized关键字

//Vector存放的元素,初始化默认长度为10protected Object[] elementData;//元素个数protected int elementCount;//每次扩容大小,默认为0protected int capacityIncrement;//构造函数,无指定初始化大小和无扩容大小public Vector() {  this(10);}//构造函数,指定初始化大小和无扩容大小public Vector(int initialCapacity) {  this(initialCapacity, 0);}//构造函数,指定初始化大小和扩容大小public Vector(int initialCapacity, int capacityIncrement) {  super();  if (initialCapacity < 0)    throw new IllegalArgumentException("Illegal Capacity: "+                      initialCapacity);  this.elementData = new Object[initialCapacity];  this.capacityIncrement = capacityIncrement;}//构造函数,Collection集合public Vector(Collection<? extends E> c) {  elementData = c.toArray();  elementCount = elementData.length;  if (elementData.getClass() != Object[].class)    elementData = Arrays.copyOf(elementData, elementCount, Object[].class);  }//确保扩容的最小容量public synchronized void ensureCapacity(int minCapacity) {  if (minCapacity > 0) {    modCount++;    ensureCapacityHelper(minCapacity);  }}private void ensureCapacityHelper(int minCapacity) {  // overflow-conscious code  if (minCapacity - elementData.length > 0)    grow(minCapacity);}//扩容private void grow(int minCapacity) {  int oldCapacity = elementData.length;  //当扩容大小为0的时候,扩容为原来的2倍  int newCapacity = oldCapacity + ((capacityIncrement > 0) ?                   capacityIncrement : oldCapacity);  if (newCapacity - minCapacity < 0)    newCapacity = minCapacity;  if (newCapacity - MAX_ARRAY_SIZE > 0)    newCapacity = hugeCapacity(minCapacity);  elementData = Arrays.copyOf(elementData, newCapacity);}private static int hugeCapacity(int minCapacity) {  if (minCapacity < 0) // overflow    throw new OutOfMemoryError();  return (minCapacity > MAX_ARRAY_SIZE) ?    Integer.MAX_VALUE :    MAX_ARRAY_SIZE;}

设置大小

public synchronized void setSize(int newSize) {  modCount++;  if (newSize > elementCount) {    ensureCapacityHelper(newSize);  } else {    for (int i = newSize ; i < elementCount ; i++) {      elementData[i] = null;    }  }  elementCount = newSize;}

超过大小的被设置为Null

public synchronized void copyInto(Object[] anArray) {  System.arraycopy(elementData, 0, anArray, 0, elementCount);}public synchronized void trimToSize() {  modCount++;  int oldCapacity = elementData.length;  if (elementCount < oldCapacity) {    elementData = Arrays.copyOf(elementData, elementCount);  }}public synchronized int indexOf(Object o, int index) {  if (o == null) {    for (int i = index ; i < elementCount ; i++)      if (elementData[i]==null)        return i;  } else {    for (int i = index ; i < elementCount ; i++)      if (o.equals(elementData[i]))        return i;  }  return -1;}

是否为空

public synchronized boolean isEmpty() {  return elementCount == 0;}

设置索引上的元素

public synchronized void setElementAt(E obj, int index) {  if (index >= elementCount) {    throw new ArrayIndexOutOfBoundsException(index + " >= " +                         elementCount);  }  elementData[index] = obj;}

添加元素

 public synchronized void addElement(E obj) {  modCount++;  ensureCapacityHelper(elementCount + 1);  elementData[elementCount++] = obj;}

扩容

插入元素

public synchronized void insertElementAt(E obj, int index) {  modCount++;  if (index > elementCount) {    throw new ArrayIndexOutOfBoundsException(index                         + " > " + elementCount);  }  ensureCapacityHelper(elementCount + 1);  System.arraycopy(elementData, index, elementData, index + 1, elementCount - index);  elementData[index] = obj;  elementCount++;}

删除元素

public synchronized boolean removeElement(Object obj) {  modCount++;  int i = indexOf(obj);  if (i >= 0) {    removeElementAt(i);    return true;  }  return false;}

上述内容就是Java中Vector的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯