2017-07-04 110 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); 
} 
相关问题