探讨Vector和list的区别
探讨Vector和list的区别。
已经代码实现下面的功能。但是我想Vector和list的功能基本一致的
问是否可以把下面的vector换成list?
实例化Vector:
Vector vec=new Vector;
……
public Vector select()
  {
   DBConnection dbc=new DBConnection();//实例化连接数据库的类
   try
   {
    Connection conn=dbc.getConnection();//连接数据库
    sql="select fileId,issue,pdfName from pdffile order by issue desc";
    pres=conn.prepareStatement(sql);//操作数据库
    rs=pres.executeQuery();//查询出记录集
    while(rs.next())//看是否有下一条
    {
     PdfFile pdf=new PdfFile();
     pdf.setFileId(rs.getInt("fileId"));
     pdf.setIssue(rs.getInt("issue"));
     pdf.setPdfName(rs.getString("pdfName"));
     vec.add(pdf);//将得到的对象加到vec中
    }    
   }
   catch (Exception e)
   {
    e.printStackTrace();
   }
   finally{
    this.close(pres,rs);
    dbc.close();
   }
   return vec;//返回一个Vector集合
  }
然后在JSP页面上实例化这个DAO,调用个方法
     Vector vec=(Vector)request.getAttribute("result");
      if(vec==null||vec.size()==0)
      {
       %>
       <h3>暂无文件!</h3>
           </table>
       <%
      }
      else
      {
      //System.out.println("result is:"+ vec.size());
       String path=null;
       int size =vec.size();
       for(int j=(pageCount-1)*10;j<(pageCount-1)*10+pageRecordNum;j++)
       {
        if(j>=size)//
数组越界        {
         break;
        }
        PdfFile pdf =(PdfFile)vec.get(j);  
        int fileId=pdf.getFileId();
        //System.out.println("manage fileId:"+fileId);
        int issue =pdf.getIssue();
        String pdfName=pdf.getPdfName();
        String pathSimple=request.getRealPath("");//得到pdfmanage.jsp所在的目录  
        session.setAttribute("path",pathSimple+"/upload/pdf");         
……
以上就是对Vector的完整操作,不过很多技术都会用到这个,我说的只是JSP+Servlet+DAO+Vo这种MVC模式中的情况.
------解决方案--------------------Vector是线程安全的,ArrayList线程不安全。
在多线程环境下在老的JDK版本里推荐使用Vector.
在JDK新版里不再推荐使用Vector,原因是定义集合时可以定义成
ArrayList list = new ArrayList();
synchronized(list){
}
用synchronized在使用时决定是否同步化对象。
------解决方案--------------------Vector vec = new Vector();
public Vector select(){...} // 既然已经返回Vector对象了,创建Vector对象
还是写在方法里面比较好一点吧。
另,Vector换成List应该不会有什么问题的
------解决方案--------------------	public List select()
	{
	  DBConnection dbc=new DBConnection();//实例化连接数据库的类
	  try
	  {
	  Connection conn=dbc.getConnection();//连接数据库
	  sql="select fileId,issue,pdfName from pdffile order by issue desc";
	  pres=conn.prepareStatement(sql);//操作数据库
	  rs=pres.executeQuery();//查询出记录集
	  while(rs.next())//看是否有下一条
	  {
	    PdfFile pdf=new PdfFile();
	    pdf.setFileId(rs.getInt("fileId"));
	    pdf.setIssue(rs.getInt("issue"));
	    pdf.setPdfName(rs.getString("pdfName"));
	    list.add(pdf);//将得到的对象加到vec中
	  }  
	  }
	  catch (Exception e)
	  {
	  e.printStackTrace();
	  }
	  finally{
	  this.close(pres,rs);
	  dbc.close();
	  }
	  return list;//返回一个Vector集合
	}  
一样的Vector(线程安全)和list(不是)
------解决方案--------------------