我有一个名为参与用户的 ArrayList。Person 有 Person.money 和 Person.name 很有趣。
我想要做的是对照自身检查 ArrayList ...
所以我有这个代码
for (Person debtHaver : this.participatingUsers) {
// If they're in debt...
if (debtHaver.getMoney() < 0) {
// With someone...
for (Person personToPay : this.participatingUsers) {
// That's not themselves...
if (!debtHaver.getName().equals(personToPay.getName())) {
// See if the personToPay is ranked higher than the
// debtHaver...
if (personToPay.getMoney() > 0) {
// If the debtee can pay the debter in full
if (-debtHaver.getMoney() <= personToPay.getMoney()) {
payment += debtHaver.getName() + " has to pay " + personToPay.getName() + " " + -debtHaver.getMoney() + "\n";
debtHaver.increaseMoney(-debtHaver.getMoney());
personToPay.decreaseMoney(-debtHaver.getMoney());
}
if (-debtHaver.getMoney() > personToPay.getMoney())
{
//But if he can't pay in full... Just pay the small bit you can pay.
payment += debtHaver.getName() + " has to pay " + personToPay.getName() + " " + personToPay.getMoney() + "\n";
debtHaver.increaseMoney(personToPay.getMoney());
personToPay.decreaseMoney(personToPay.getMoney());
}
}
}
}
}
}
return payment;
基本上,我有一个双重 for 循环,我在其中检查每个人。如果某人负债累累并且有负数的钱,请寻找是否有人可以支付,然后支付给那个人。问题是,personToPay 没有在 debtHaver 所在的arrayList 中更新。我基本上是在编辑两个不同的 ArrayList,而不是同一个。处理这个问题的最佳方法是什么?