2013-02-14 26 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));