Vector

#集合

为容纳一组对象,最适宜的选择应当是数组。而且假如容纳的是一系列基本数据类型,更是必须采用数组


Java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及Hashtable(散列表)

(1) 将一个对象句柄置入集合时,由于类型信息会被抛弃,所以任何类型的对象都可进入我们的集合
(2) 由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄
     正式使用它之前,必须对其进行造型,使其具有正确的类型

在某些情况下,程序似乎正确地工作,不造型回我们原来的类型

第一种情况是相当特殊的:String 类从编译器获得了额外的帮助,使其能够正常工作

Vector 的使用是非常简单的:先创建一个,再用 addElement()置入对象,以后用 elementAt()取得那些对象

注意 Vector 有一个 size()方法,可使我们知道已添加了多少个元素,以便防止误超边界,造成违例错误

Vector cats=new Vector();

Vector<Cat> cats2=new Vector<Cat>();

package com.zy.chapter8;

import java.util.Vector;

/** 
* @ClassName: VectorDemo
* @Description: test the function of Vector Class
* @return 
* @parameter  
* @author : yizhou
* @date :2018年1月11日 下午11:33:01 
* @version 1.0  
*/

class Cat{
	private String catName;
	Cat(String name){
		this.catName=name;
	}
	public String toString() {
		return "Cat "+catName;
	}
	public String getName() {
		return "Cat "+catName;
	}
}

class Dog{
	private String dogName;
	Dog(String name){
		this.dogName=name;
	}
	public String toString() {
		return "Dog "+dogName;
	}
	public String getName() {
		return "Dog "+dogName;
	}
}

public class VectorDemo {
	static String name(){
		return ""+(int)(Math.random()*10);
	}
	
	public static void main(String[] args) {
		
		//creat a Vector handle and put diffrent Class into Vector
		Vector cats=new Vector();
		cats.addElement(new Cat(name()));
		cats.addElement(new Dog(name()));
		//toString Method do't need upCasting
		for (Object object : cats) {
			//RunningException :upCasting a wrong type
			//((Cat)object).getName();
			System.out.println(object);
		}
		//must upCasting if want to use other method except toString
		System.out.println(((Cat)cats.elementAt(0)).getName());
		System.out.println(((Dog)cats.elementAt(1)).getName());
		System.out.println();
		
		//create a Vector handle only Cats can be added in
		Vector<Cat> cats2=new Vector<Cat>();
		cats2.addElement(new Cat(name()));
		cats2.addElement(new Cat(name()));
		//Can not add Dog Object
		//cats2.addElement(new Dog(name()));
		//use it without upCasting
		for (int i = 0; i < cats2.size(); i++) {
			System.out.println(cats2.elementAt(i).getName());
		}
	}
}

Cat 2
Dog 4
Cat 2
Dog 4

Cat 1
Cat 3


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值