![](/img/trans.png)
[英]Convert in java List<POJO> to Map<String, List<Object>> where the key is a field name and value is a list of values by field
[英]Convert a list of Object values to a POJO
嗨,我有以下依賴項的返回值。 我正在嘗試將其轉換為代表它的POJO。
返回類型結構:
DependencyAPIResult
- List<Attribute>
每個屬性具有以下類定義:
public class Attribute {
@NonNull private final AttributeKey key;
@NonNull private final AttributeValue value;
Getters
.
.
.
Setters
.
.
.
}
我想將此結果映射到以下表示的POJO:
public class MyPOJO {
private pojoId;
private pojoName;
private pojoValue;
}
我目前將結果轉換為POJO的方式是這樣的:
String pojoId = null;
String pojoName = null;
String pojoValue = null;
for (Attribute attribute : result.getAttributes()) {
switch (attribute.getKey().getName()) {
case "pojoId"
id = attribute.getValue().getStringValue();
break;
case "pojoName":
name = attribute.getValue().getStringValue();
break;
case "pojoValue":
pojoValue = attribute.getValue().getStringValue();
break;
default:
break;
}
}
是否有一種方法/映射器,或者可能是Java 8 lambda函數,可以用來使它更好? 謝謝!
您可以將它們存儲在Map
而不是通過switch
使用for
:
Map<String, String> valuesByKeyName =
result.getAttributes().stream()
.collect(Collectors.toMap(k -> k.getKey().getName(),
v -> v.getValue().getStringValue()));
String id = valuesByKeyName.get("pojoId");
String name = valuesByKeyName.get("pojoName");
String pojoValue = valuesByKeyName.get("pojoValue");
Pojo pojo = new Pojo(id, name, pojoValue);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.