java.util.ArrayList
数组和数组列表之间有着重大的区别。数组是
Java
语言的一个特征,对于每个元素类型
T
,都有数组类型
T[];
然而,
ArrayList
类是个定义
java.util
包中的类库。这是一个存放
object
类型元素的
"
普通性
"
的类型。要注意的是,要从数组列表中提取元素时,需要进行类型转换。
使用
add
方法可以向数组列表中添加新元素:
ArrayList staff = new ArrayList();
staff.add(new Employee(....));
staff.add(new Employee(....));
ArrayList
类管理了一个
Object
引用的内部数组。最终,可能会用完数组的空间。如果调用了
add
,而内部数组已经满了,数组列表将自动创建了一个更大的数组,并自动把小数组中的对象拷贝到大数组中
Size
方法返回数组列表的实际元素个数
staff.size()
它等价于数组
a
的
a.length
访问数组列表元素
因为
ArrayList
类不是
Java
语言的一部分,它只是个提供在标准库中、由某人编写的工具类,并不像在访问数组元素时可以使用
[]
语法那
样,要存取或改变数组元素,你必须使用
get
和
set
方法
要设置第
i
个元素,需要使用:
staff.set(i,harry);
得到数组列表元素要更复杂一些,因为
get
方法返回的类型是
Object
,你还需要把它转换为想要的类型
Employee e = (Employee)staff.get(i);
它等价于
Employee e = a[i];
最后总结一下:
无需指定数组大小
用
add
增添任意多的元素
;
用
size()
代替
length
计算元素的个数
;
用
(Employee)a.get(i)
代替
a[i]
访问元素
i;
public
Collection setRollBack(QueueVB job)
throws
CustomException
{
String sqlselect
=
"
select FileName from JobQueue where BatchNum=
"
+
job.getBatchNum()
+
"
and DocTypeID=
"
+
job.getDocTypeID()
+
"
and JobState='6'
"
;
String sql
=
"
update JobQueue set JobState=
"
+
JobState.SAVE
+
"
where BatchNum=
"
+
job.getBatchNum()
+
"
and DocTypeID=
"
+
job.getDocTypeID()
+
"
and JobNum=
"
+
job.getJobNum()
+
""
;
ArrayList array
=
new
ArrayList();
System.out.println(sql);
try
{
getConnection
=
ConnectionLocator.getInstance().getConnection(strJNDI);
ResultSet rs
=
null
;
if
(getConnection
!=
null
)
{
PreparedStatement pstmt1
=
getConnection.prepareStatement(sqlselect);
PreparedStatement pstmt
=
getConnection.prepareStatement(sql);
rs
=
pstmt1.executeQuery();
pstmt.executeUpdate();
while
(rs.next())
{
String fileName
=
rs.getString(
"
FileName
"
);
FileNameVB filenameVB
=
new
FileNameVB();//
将得到的
“
文件名
“
进行封装
filenameVB.setFileName(fileName);
array.add(filenameVB);
}
try
{
pstmt.close();
}
catch
(SQLException e)
{
throw
new
CustomException(e.getMessage(),
"
exs
"
);}
try
{
getConnection.close();
}
catch
(SQLException e)
{
throw
new
CustomException(e.getMessage(),
"
exs
"
);}
}
}
catch
(SQLException e)
{
throw
new
CustomException(e.getMessage(),
"
ex00050
"
);}
return
array;
}
读取
arraylist
里的值
Collection m = inputFacade.setRollBack(job);
ArrayList array = (ArrayList)m;
for
(
int
i=0;i<array.size();i++)
{
filenameVB = (FileNameVB)array.get(i);
}