Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

465
Views
Kotlin Cómo usar java streams .map() en kotlin para mapear una respuesta de objeto diferente

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!

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

algunos prototipos rápidos

 details = acctBal .filter{ f -> f.getBalType() != null } .map { it -> mapToProductDetail (it) }

puedes echar un vistazo aquí

over 4 years ago · Santiago Trujillo Report

0

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

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!