2017-07-04 112 views
0

我有一個類A具有下面的私有成員。如何將對象列表轉換爲java中的一個行對象

class A { 
    String type; 
} 

上面的類將作爲列表對象List來。現在我還有一個B類

Class B { 
    String type1; 
    String type2; 
    String type3; 
    String type4; 
    String type5; 
    String type6; 
    String type7; 
    String type8; 
} 

所以,我現在該怎麼要通過列表進行迭代,並通過一個拿到(類型)的數據之一,然後放入B級像第一個單一的對象會去到Type1,第二個---> type2,第三個---> type3 .....等等。 注意:A類只有8種類型作爲列表。所以我們將在B類中有8種類型,並且我已經考慮過反射,所以請告訴我如何使用它,如果這是唯一的選擇。

+2

你會考慮用數組或列表替換這八個字段嗎? –

+0

你可以使用反射或簡單的:'type1 = list.get(0).type; type2 = list.get(1).type;'等等。 – Flown

+0

@達伍德,是的,我認爲,但B類對象將去Japser的報告,它旨在採取只有輸入。 – sharief

回答

0

如果你可以改變B類爲:

class B 
{ 
    String[] types; 
} 

那麼我們可以這樣做:

int i = 0; 
for(A aObject:aList){ 
    bObject.types[i] = aObject.type; 
} 

否則我們可以添加各類這樣的:

bObject.type1 = aList.get(0).type; 
bObject.type2 = aList.get(1).type; 

等上。

0

Jasper支持Map,所以我建議您可以將值存儲在SortedMap中,例如TreeMap而不是具有公共變量的類。

那麼你會添加您的類型名稱是這樣的:

Map<String, String> b = new TreeMap<>(); 
b.put("type1", "Foo"); 
b.put("type2", "Bar"); 
b.put("type3", "Baz"); 
... 

或者,如果您是從列表填充:

List<A> list = ...; 
Map<String, String> b = new TreeMap<>(); 
for (int i = 0; i < list.size(); i++) { 
    b.put("type" + (i + 1), list.get(i).type; 
} 

要在地圖上遍歷所有的名字,你可以使用:

for (Map.Entry<String, String> entry: b.entrySet()) { 
    String key = entry.key(); 
    String value = entry.value(); 
    System.out.println(key + " = " + value); 
} 
相關問題