簡體   English   中英

如何在Java中將對象列表轉換為一行對象

[英]How to transform list of objects into one row object in java

我的A類有如下私人成員。

class A {
  String type;
}

上面的類將作為列表對象List出現。 現在我有另一個班B

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

所以現在我如何遍歷List並逐個獲取(type)數據,然后將其放入B類中,因為單個對象就像第一個對象將進入Type1,第二個---> type2,第三個---> type3 .....,依此類推。 注意:A類中只有8種類型作為列表。 所以在B類中我們將有8種類型,並且我已經考慮過反射,因此,如果這是唯一的選擇,請告訴我如何使用它。

如果可以將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;

等等。

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

然后,您將像這樣添加類型名稱:

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

或者,如果您從A列表中進行填充:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM