探讨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(不是)
------解决方案--------------------