#集合
为容纳一组对象,最适宜的选择应当是数组。而且假如容纳的是一系列基本数据类型,更是必须采用数组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