vector类

在JDK2.0之前(在java的集合框架之前),要存储多个数据,此时存在一个叫vector类,该类其实就是一个Object数组,vector类中的方法是支持同步的。
设计原理:查看源代码:
里面方法使用了synchronized修饰可知vector是线程安全的。
这里写图片描述


这里写图片描述

注意:vector默认长度是10,由于源码中的不带参数的vector()里面是调用this(10)调用vector(带参数)的构造方法,因此初始化带参数效率更高一点。
vector类存储原理:
还是 Object[ ] 类型数组。

protected Object[] elementDate;
  1. 表面上把数据存储到Vector对象中,其实底层依然是把数据存储到Object数组中的。
  2. 我们发现该数组的元素类型是Object类型,意味着集合中只能存储任意类型的对象。
    集合中只能存储对象不能存储基本数据类型。*在java5之前,必须对基本数据类型手动装箱。*
    从java5开始支持自动装箱操作
    代码:如:v.add(123);其实底层依然是手动装箱,修改项目的编译为java5以上不会出错(自动装箱)。

  3. 集合中存储的对象,都存储的对象的引用,而不是对象本身。
    案例:

package com.test;

import java.util.Date;
import java.util.Vector;

public class ExtendThread extends Thread {
    public static void main(String[] args) {
        Vector vector = new Vector(5); 
        vector.addElement(new Date());
        vector.addElement(234);
        System.out.println(vector);
        System.out.println("---------------------------");
        StringBuilder stringBuilder = new StringBuilder("ABC");
        vector.addElement(stringBuilder);
        System.out.println(vector);
        System.out.println("----------追加内容-----------------");
        stringBuilder.append("addContent");
        System.out.println(vector);
        System.out.println("--------为什么数组结果被改变了?-------------------");

    }
}

运行结果:

[Mon Mar 12 17:35:10 CST 2018, 234]
---------------------------
[Mon Mar 12 17:35:10 CST 2018, 234, ABC]
----------追加内容-----------------
[Mon Mar 12 17:35:10 CST 2018, 234, ABCaddContent]
--------为什么数组结果被改变了?-------------------

解释:
这里写图片描述


vector操作方法:

  1. add(int index, E element) :在此向量的指定位置插入指定的元素。如果数组中元素已经存储,则执行效率很低,因为会使数组中整体元素移动。
    add中参数为集合时:
package com.test;

import java.util.Date;
import java.util.Vector;

public class ExtendThread extends Thread {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.add("A");
        vector.add("B");
        vector.add("C");
        Vector v = new Vector(5);
        v.add("A");
        v.add("B");
        v.add("C");
        vector.add(v);
        System.out.println(vector);
    }
}

输出: [A, B, C, [A, B, C]]

  1. addAll(Collection
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值