今天,我学习了工具类java.util.包中的几个平时经常用到的几个类,例如ArrayList、HashMap、Hashtable等几个类,在这我总结一下ArrayList的用法。

       特征:允许null在内的所有元素,大致上等同于Vector类,但是他是不同步的。

      ArrayList实现的对象非常方便的进行存储,下面的代码是能够非常明显的显示出这个类的方便之处。

   
   
   
   
  1.  
  2.        
  3. import java.io.ByteArrayInputStream;     
  4. import java.io.ByteArrayOutputStream;     
  5. import java.io.IOException;     
  6. import java.io.ObjectInputStream;     
  7. import java.io.ObjectOutputStream;     
  8. import java.util.ArrayList;     
  9. import java.util.List;       
  10. public class TestMain {          
  11.     /**       * @param args       */    
  12.       
  13.  
  14.  
  15.  public static void main(String[] args) {           
  16.      // TODO Auto-generated method stub            
  17.      List src = new ArrayList(4);            
  18.      Userinfo ui1 = new Userinfo();           
  19.      ui1.setId(1);             
  20.      ui1.setName("aaa");             
  21.      src.add(ui1);     
  22.        
  23.      Userinfo ui2 = new Userinfo();            
  24.      ui2.setId(2);             
  25.      ui2.setName("bbb");             
  26.      src.add(ui2);      
  27.      System.out.println(src.size());  
  28.        
  29.       
  30.        
  31.      List dest = new ArrayList(2);    
  32.        
  33.      TestMain test = new TestMain();                    
  34.      try {                
  35.          dest = test.deepCopy(src);     //深拷贝        
  36.          }   
  37.      catch (IOException e) {      
  38.              // TODO Auto-generated catch block                
  39.              e.printStackTrace();            
  40.              }    
  41.      catch (ClassNotFoundException e) {       
  42.                  // TODO Auto-generated catch block                
  43.                  e.printStackTrace();            
  44.                  }                   
  45.              System.out.println(src==dest);           
  46.              Userinfo u1 = (Userinfo)src.get(0);  
  47.              Userinfo u2 = (Userinfo)src.get(1);           
  48.              System.out.println(u1.getName());   
  49.              System.out.println(u2.getName());  
  50.              Userinfo uu = (Userinfo)dest.get(0);           
  51.              //uu.setName("dkkdkddk");            
  52.              System.out.println(u1.getName());   
  53.              System.out.println(u2.getName());  
  54.              System.out.println(uu.getName());               
  55.                        
  56.      }  
  57.        
  58.    
  59.  
  60.       public List deepCopy(List src) throws IOException, ClassNotFoundException{   //将list复制并且翻转   
  61.              ByteArrayOutputStream byteOut = new ByteArrayOutputStream();            
  62.               ObjectOutputStream out = new ObjectOutputStream(byteOut);            
  63.               out.writeObject(src);                  
  64.               ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());         
  65.               ObjectInputStream in =new ObjectInputStream(byteIn);           
  66.               List dest = (List)in.readObject();            
  67.               return dest;     
  68.                 }  
  69. }  
  70.  

这个测试类,实现的内容是把两个UserInfor对象存储进去,然后方法deepCopy是把列表反转复制。

如果想了解反转的话,可以看一下API中对ObjectOutputStream的介绍。