优秀的编程知识分享平台

网站首页 > 技术文章 正文

Java基本对象,并不可怕的Vector(java对象的作用范围)

nanyue 2024-08-12 22:28:34 技术文章 4 ℃

Vector

Vector类,也称为向量类,它实现了动态数组,用于元素数量变化的对象数组。

Vector类也是以索引0开始的下标表示元素的位置。

Vector对象创建后,数组的元素个数会随着Vector集合中元素个数的增大和缩小而自动变化。

Vector类中的大多数方法是同步的,使用synchronized修饰的,所以线程安全,但效率低。

添加元素

在Java中,Vector添加元素有两种方式:队尾添加指定位置添加

// add 方法默认将元素添加到队尾
vector.add("wei");
vector.add("ijunfu");
vector.add(12);
vector.add(17);

// 将元素添加到指定索引位置,原位置及其后面的元素集体向后移一位
vector.add(2, 29);

修改元素

vector.set(1, 29);	// 修改指定索引位置上的元素

删除元素

vector.remove("wei");
vector.remove(Integer.valueOf(12)); // 删除指定元素
vector.remove(2);   //  删除指定索引位置上的元素

需注意的是,当删除int类型的元素时,需要使用其包装类型Integer,否则会将其认为是索引,可能会引起异常

获取集合大小

int size = vector.size();
System.out.println("size: " + size);

判断集合是否为空

 boolean empty = vector.isEmpty();
System.out.println(empty);

获取指定索引位置上的元素

Object o = vector.get(0);
System.out.println(o.toString());

将Vector转为数组

Object[] arrs = vector.toArray();
System.out.println(Arrays.asList(arrs));

验证是否线程安全

Vector vector = new Vector();

Runnable run = new Runnable() {
  @Override
  public void run() {
    for(int i=0; i<100; i++) {
      vector.add(i);
    }
  }
};

Thread t1 = new Thread(run);
Thread t2 = new Thread(run);
Thread t3 = new Thread(run);

t1.start();
t2.start();
t3.start();

// 保证线程执行完毕后,主线程打印结果
try {
  t1.join();
  t2.join();
  t3.join();
} catch (InterruptedException e) {
  e.printStackTrace();
} finally {
  System.out.println("size: " + vector.size());
}

创建三个线程一起向Vector加入元素,每个线程添加100个元素。上述代码无论执行多少次,最后结果都是300。所以,Vector是线程安全的。

最近发表
标签列表