我创建了一个对象,其中包含针对数据库运行的查询的所有结果。然后将这些结果存储在数组中。
我正在尝试将此数组转换为ArrayList,以便可以将其导入到文档中。
我试过了:
//trustSummary is the name of my array
ArrayList data = new ArrayList(Arrays.asList(trustSummary));
但是,当我尝试在应用程序的另一部分中运行以下代码时,这似乎会导致问题(ClassCastException
)。请任何人能够指出正确的方向来解决这个问题。
for (Iterator rows = data.iterator(); rows.hasNext();)
ArrayList row = (ArrayList) rows.next();
答案 0 :(得分:2)
您在编写ArrayList(Collection)
的部分中使用的new ArrayList(Arrays.asList(trustSummary));
构造函数会使用源集合中的元素创建ArrayList
,但不会创建ArrayList
与另一个集合作为元素。
因此您需要修复该行,或更改行
ArrayList row = (ArrayList) rows.next();
到
TrustSummary ts = (TrustSummary) rows.next();
一般来说,我会建议使用泛型,以避免对集合类型的这种混淆。
在您的情况下,例如
List<TrustSummary> summaries = new ArrayList<TrustSummary>(Arrays.asList(trustSummary));
答案 1 :(得分:0)
只有trustSummary
为:
ArrayList[] trustSummary;
或:(虽然这没有用,因为那时数组只有1个元素,因此你可以直接使用元素)
ArrayList trustSummary;
上述两种方法都有效,因为Arrays.asList
将数组中的数组或一组项目作为参数。
需要如上定义trustSummary(以ArrayList
为元素)的原因是因为迭代器从data
(从数组转换而来)一次抓取一个元素(所以返回类型next()
是数组中使用的类型(在本例中为ArrayList
)。)
这样可行:
String[] trustSummary = {"1", "2", "3"};
ArrayList<String> data = new ArrayList<String>(Arrays.asList(trustSummary));
for (Iterator rows = data.iterator(); rows.hasNext();)
System.out.println((String)rows.next());
或者这个:
String trustSummary = "1";
ArrayList<String> data = new ArrayList<String>(Arrays.asList(trustSummary));
for (Iterator rows = data.iterator(); rows.hasNext();)
System.out.println((String)rows.next());
将String
替换为所需类型并进行相应更改。
答案 2 :(得分:-1)
for (Iterator rows = data.iterator(); rows.hasNext();)
{
Map.Entry entry = (Map.Entry) rows.next();
ArrayList row = (ArrayList) entry.getValue();
}