Estoy tratando de asignar una matriz de objetos a otra matriz con diferentes tipos de objetos, solía hacer esto usando secuencias en Java 8, era bastante sencillo, crear una instancia de un objeto, establecer sus valores y devolver el objeto. Me acabo de cambiar a Kotlin y realmente a veces es más confuso hacer este tipo de operaciones. Todos los ejemplos que encontré son realmente simples y no pude encontrar algo que quiero.
Tengo esta clase BalanceMap:
data class BalanceMap @JsonCreator constructor( var balType: String, var value: Any )
Estoy obteniendo los datos del servicio web.
val balances: List<AcctBal> = res.getAcctBals();la clase AcctBal se ve así
public class AcctBal { @SerializedName("CurAmt") @Expose private CurAmt curAmt; @SerializedName("Desc") @Expose private String desc; @SerializedName("ExpDt") @Expose private LocalDateTime expDt; } e intente asignar esa respuesta a var balanceList: List<BalanceMap>
balances.map {} --> var balanceList: List<BalanceMap> = balances.map { t -> fun AcctBal.toBalanceMap() = BalanceMap( balType = "", value = "" )}
Quiero hacer algo como esto:
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());He estado experimentando pero siempre sale mal, cualquier ayuda será muy apreciada. ¡Feliz codificación!
Gracias a @Hakob Hakobyan por apuntar en la dirección correcta.
Dejé mi solución así:
fun mapRs(rs: AthProductResponse): BalanceByAccountRs { val res = rs.getPartyAcctRelRec(); val balances: List<AcctBal> = res.getAcctBals(); val account = Account(res.getPartyAcctRelInfo().depAcctId.acctId, res.getPartyAcctRelInfo().depAcctId.acctType) var balanceList: List<BalanceMap> = balances .filter { f -> f.getDesc() != null } .map { it -> mapToProductDetail(it) } .toList() return BalanceByAccountRs(account, balanceList) } fun mapToProductDetail(bal: AcctBal): BalanceMap { var propertyValue: Long = 0L; if(bal.getExpDt() != null) { propertyValue = Timestamp.valueOf(bal.getExpDt()).getTime() } else { propertyValue = bal.getCurAmt().getAmt().toLong() } return BalanceMap(bal.getDesc(), propertyValue) }Por si alguien está pasando por lo mismo. Codificación feliz