2013-02-14 61 views
1

我创建了一个对象,其中包含对数据库运行的查询的所有结果。这些结果然后存储在一个数组中。将数组对象转换为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(); 
+1

'data'是'ArrayList'。不是它的元素。 – ogzd 2013-02-14 13:15:03

+3

“trustSummary”的类型是什么? – ogzd 2013-02-14 13:18:15

+0

我想你在这里有一个包含对象数组的ArrayList(每个对象数组都是结果的一行)。尝试在for循环中转换为Object []。 – Averroes 2013-02-14 13:19:21

回答

-1
for (Iterator rows = data.iterator(); rows.hasNext();) 
{ 
    Map.Entry entry = (Map.Entry) rows.next(); 
    ArrayList row = (ArrayList) entry.getValue(); 
} 
+5

你在哪里找到问题中的Map? – Dukeling 2013-02-14 13:17:18

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

你写new ArrayList(Arrays.asList(trustSummary));从源集合中的元素创建一个ArrayListArrayList(Collection)构造您所使用这里的一部分,它不会创建另一个集合为元素的ArrayList

所以,你需要或者修复该线路,或更改线路

ArrayList row = (ArrayList) rows.next(); 

TrustSummary ts = (TrustSummary) rows.next(); 

一般来说,我会建议使用泛型,避免那种关于集合的类型混乱。

在你的情况是要么是例如

List<TrustSummary> summaries = new ArrayList<TrustSummary>(Arrays.asList(trustSummary));