Kotlin 如何在 kotlin 中使用 java 流 .map() 来映射不同的对象响应

标签 kotlin java-8 java-stream

我正在尝试将一个对象数组映射到另一个具有不同类型对象的数组,我曾经使用 java 8 中的流来执行此操作,这非常简单,实例化一个对象设置其值并返回该对象。我刚切换到 Kotlin,有时做这种操作会更令人困惑。我找到的所有示例都非常简单,找不到我想要的东西。

我有这个 BalanceMap 类:
data class BalanceMap @JsonCreator constructor( var balType: String, var value: Any )
我正在从 Web 服务获取数据。

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

关于Kotlin 如何在 kotlin 中使用 java 流 .map() 来映射不同的对象响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54753856/

相关文章:

java - Arrays.stream(array) 与 Arrays.asList(array).stream()

java - 如何从 LongStream 创建 map

java - 将 Files.lines 与 .map(line -> line.split ("multiple delimiters")) 一起使用

Java 8 stream api 控制输出

android - 如何将顺序协程 block 排入队列

java - 执行列表中的可运行程序

Java 8 与流中的过滤器相反

list - Kotlin 生成没有重复元素的列表的排列(按顺序)

android - rxjava2 和 rxkotlin 有什么区别?

arrays - Kotlin String到Int数组