黑马程序员-- java集合类--Vector/泛型

来源:互联网 发布:类似于格来云的软件 编辑:程序博客网 时间:2024/06/06 09:49

  集合类--Vector/泛型

   Java用集合类来容纳不同种类的数据,java.util包中提供的向量(Vector)类就是集合类的一种。

       该类是Java语言为解决数组长度和元素类型不能改变而引入的集合类,用来表示线性数据结构。

 构造方法
     public Vector():创建一个空向量对象

     public Vector(int initialCapacity):使用指定的初始容量构造一个空的向量对象。标准容量增量为0

     public Vector(int initialCapacity,int capacityIncrement)使用知道的初始容量和容量增量构造一个空的向量。


 向量类中常用方法

     插入元素 public void addElement(Object obj)

              public void insertElement(Object obj,int index)

     修改元素 public void setElementAt(Object obj,int index)

     删除元素 public void removeAllElements()
   
              public boolean removeElement(Object obj)

              public void removeElementAt(int index)

 
  获取向量中元素的值
            public Object elementAt(int index)

            public Enumeration elements()

  查找  public int indexOf(Object elem)

        public int lastIndexOf(Object elem)

        public boolean contains(Object elem)

  其他方法 public int size() 元素的个数

           public int capacity() 容量的大小

           public Sring toString() 向量中所有元素的字符串表示


 例9.1 Vector类的使用。
      Vector v=new Vector();
      v.addElement("one ");
      v.addElement("two ");
      v.addElement("three ");
      v.insertElementAt("zero",0);
      v.insertElementAt("anotherThree",3);
      v.setElementAt("four ",4);
      System.out.println(v.toString());
      v.removeAllElements(); 


  如何获取向量对象中保存的元素?

     例如,String str1=v.elementAt(0);×
           String str2=v.elementAt(1);×

   修改上例:向向量对象中加入元素时,加入的是以父类Object身份出现的子类String对象,

            通过elementAt()方法获取的还是以父类对象身份出现的子类对象,因此可以通过“造型”恢复子类对象的原貌。
  
            即:String str1=(String)v.elementAt(0); 

 

   泛型的思想:

          消除取用集合元素时代码中的强制类型转换,比如事先规定好一个集合中允许加入的具体元素类型,

          然后在编译环节实现集合中添加元素的类型检查,以防止有人将非预期类型的元素保存到集合中。

   优点:类型错误可以在编译时暴露出来,而不是在运行时才发作(抛ClassCastException),这有助于早期错误排查,并提高程序的可靠性。


  使用泛型的Vector类:

     java.util包里的Vector类的泛型声明:
      public class Vector<E>{
            void add(E x);
            ….
      }
      Vector<Integer> c=new Vector<Integer> ();
      c.add(15);    c.add(new Integer(10));
      // c.add("name");
      for(int i=0;i<c.size();i++){
          Integer value=c.get(i);   System.out.println(value);
      }


   注意:
     (1)JDK5.0后集合类定义像Vector一样都进行了泛型化改造,还有泛型类带有多个类型参数,如Map<K, V>就有两个类型参数,表示键-值映射。

     (2)Java语言中的泛型是维护向后兼容的,即我们完全可以不采用泛型,而继续沿用过去的做法。

     (3)在高版本开发环境中编译未启用泛型机制的集合类应用代码时,会输出编译提示信息。

 

 

原创粉丝点击