比较2个不同列表中的相同值-Kotlin

时间:2020-09-09 20:43:28

标签: kotlin

我对Kotlin还是很陌生,我正在做此练习,您需要2个列表,一个用于发票,另一个用于发票值,例如:

发票 ......................................│发票值
invoiceNumber = 1 .........│itemName =百事可乐
customerName =Alfred│数量= 2
TotalValue = $ 13,00 ......│价格= 2.50
....................................................│invoiceNumber = 1
......................................│
......................................│itemName =谷物
......................................│数量= 2
......................................│价格= 4
......................................│invoiceNumber = 1

我得到的只是显示我想要的发票编号,但是我无法设法得出结果“总计+ =数量*价格”,这是我到目前为止尝试过的:

<button @click="goHome()">Home</button>

1 个答案:

答案 0 :(得分:0)

映射到总计

假设您要获取发票总额,可以执行以下操作:

totals

invoice是发票编号到所有相关项目的总价的映射。 (假设您尝试将invoiceItem上的invoiceNumber2 = invoiceNumberval VarInvoice.total get() = invoiceItem .filter { it.numInvoice2 == numInvoice } .sumByDouble { it.unitPrice * it.quantity } 加入

扩展属性

或者您可以将扩展属性拍打到VarInvoice上,而不是在数据类上将其声明为属性(只是请注意,您不能在函数(例如您的主函数)中执行此操作)

{1=13.0, 2=14.0, 3=13.5}

很高兴您可以提供有关如何构建应用程序的更多信息。对此可能有更好的解决方案。

P.S。 1

在您的代码之后,我得到了:{1=13.0 "by person with ssn: "84739572857, 3=13.5 "by person with ssn: "74959572857, 2=14.0 "by person with ssn: "38295840284,我想弄清楚它被排序的方式并包括人的ssn,例如: val totaledInvoice = invoiceItem.groupBy { it.numInvoice2 }.mapValues { item -> invoice.first { it.numInvoice == item.value.first().numInvoice2 }.copy( total = item.value.sumByDouble { it.unitPrice * it.quantity } ) } 很抱歉,英语不是我的主要语言,我感激不尽!

从技术上讲,您可以尝试执行以下操作:

mapValues

您可以在def add_item(d, new_pair, old_key): #insert a newPair (key, value) after old_key n=list(d.keys()).index(old_key) return {key:d.get(key,new_pair[1]) for key in list(d.keys())[:n+1] +[new_pair[0]] + list(d.keys())[n+1:] } lambda中返回所需的任何内容,但是代码变得荒谬和低效。我建议尝试使用扩展属性解决方案。