我有一个Trade
类,它有3个参数(amount
,description
,date
)。每个交易的amount
不能大于maxAmount
。
我有许多交易保存在ListToSend
中,其中一些金额超过了maxAmount
限制,所以我需要在发送列表之前将这些交易拆分为多个交易。
我考虑过使用两个列表,一个是原始的ListToSend
列表,另一个是tradesToSplit
列表。
1.将每个splitableTrade
从ListToSend
移动到tradesToSplit
。
- 然后我想循环
tradesToSplit
,对于其中的每笔交易: - 我调用一个
recursiveMethod
,它将把这个数除以2,然后: - 如果
amount/2
不大于maxAmount
: - 然后我创建了一个
newTrade
,它本质上是初始交易的深度副本,我将newTrade
的金额设置为originalAmount/2
。 - 如果没有,我会调用
recursiveMethod
来继续除以该金额
但是我被困在这里,因为我不知道如何编辑经过多次迭代的recursiveMethod
原始交易。
有没有更好的方法来实现我想做的事情?
2条答案
按热度按时间ylamdve61#
在OOP中,推荐保持对象不变,因为不变对象本质上是线程安全的,更容易调试(你可以共享对象引用而不用担心意外的或未授权的改变),等等。
在你的例子中,我将创建一个函数
splitTrade
,它将接受任何amount
的交易,并返回一个交易列表,其中每个amount
小于maxAmount
。下面是一些伪java代码:
不使用lambda语法:
lstz6jyr2#
一个可能的解决方案是在
Trade
中使用一个方法,生成满足以下条件的交易流:如果你不熟悉交易流,那么这个语句可能会有点混乱,但它本质上产生了2个新的交易,然后为每个交易产生了一个法律的的交易流。
这就使得转换你的交易列表变得很简单: