将对象数组转换为ArrayList的问题

时间:2013-02-14 13:12:34

标签: java arrays arraylist

我创建了一个对象,其中包含针对数据库运行的查询的所有结果。然后将这些结果存储在数组中。

我正在尝试将此数组转换为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();

3 个答案:

答案 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(); 
}