我试图将一个对象数组映射到另一个具有不同类型对象的数组,我曾经使用 java 8 中的流来做到这一点,它非常简单,实例化一个对象,设置其值并返回该对象。我刚刚切换到 Kotlin,有时做这种操作确实更令人困惑。我找到的所有示例都非常简单,找不到我想要的东西。
我有这个 BalanceMap 类:data class BalanceMap @JsonCreator constructor( var balType: String, var value: Any)
我正在从网络服务获取数据。
val balances: List<AcctBal> = res.getAcctBals();
AcctBal 类看起来像这样
public class AcctBal {
@SerializedName("CurAmt")
@Expose
private CurAmt curAmt;
@SerializedName("Desc")
@Expose
private String desc;
@SerializedName("ExpDt")
@Expose
private LocalDateTime expDt;
}
并尝试将该响应映射到
var balanceList: List<BalanceMap>
balances.map {}
-->
var balanceList: List<BalanceMap> = balances.map { t -> fun AcctBal.toBalanceMap() = BalanceMap( balType = "", value = "" )}
我想做这样的事情:
List<ProductDetail> details = acctBal.stream().filter(f -> f.getBalType() != null).map(e -> {
String bal = e.getBalType();
if (avalProductInfo.getBankId().equals("00010016")) {
bal = e.getBalType();
}
ProductDetail detail = new ProductDetail();
detail.setItem(bal);
if (e.getCurAmt() != null) {
detail.setValue(e.getCurAmt().getAmt().toString());
} else if (e.getRelationDt() != null) {
detail.setValue(e.getRelationDt().toGregorianCalendar().getTimeInMillis());
} else if (e.getMemo() != null) {
detail.setValue(e.getMemo());
}
return detail;
}).collect(toList());
我一直在试验,但总是错的,任何帮助将不胜感激。快乐编码!
最佳答案
一些快速原型(prototype)制作
details = acctBal
.filter{ f -> f.getBalType() != null }
.map { it -> mapToProductDetail (it) }
你可以看看here