public static void compareTravelBalance(Map<String, Integer> travelCosts, Map<String, Integer> travellerBalances){
Set set = travelCosts.entrySet();
Iterator iterator = set.iterator();
Set set1 = travellerBalances.entrySet();
Iterator iterator1 = set1.iterator();
while(iterator.hasNext()) {
Map.Entry mentry = (Map.Entry)iterator.next();
Map.Entry mapEntry= (Map.Entry) iterator1.next();
int cost = (Integer) mentry.getValue();
int balance = (Integer) mapEntry.getValue();
if(travellerBalances.containsKey(mentry.getKey())){
if(cost>balance){
System.out.println("Insufficient funds for "+mentry.getKey()+": Cost: "+cost+" Balance: "+balance);
}
else if(cost<=balance){
System.out.println("Approved! for: "+mentry.getKey()+": Cost: "+cost+" Balance: "+balance);
}
}
else{
System.out.println("Traveller ID "+mentry.getKey()+" does not exist");
}
}
}
以上是我的代码。我有两个CSV,我将其数据保存到两个不同的TreeMap中-travelCosts和travellerBalances。键值对分别以travellerId作为键,把travelCost作为第一个TreeMap中的值,把travelBalance作为第二个TreeMap中的值。
我正在尝试根据travellerId比较来自不同地图的两个值。因此,如果成本>余额,则应打印资金不足。如果成本
我附加了CSV,这些CSV将为您显示地图中的数据。
问题是:如果您查看数据,它将比较travellerid 2001和2002以及2002和2003等。相反,应该说2001不存在。
我希望我有道理。请询问您是否需要更多信息。
谢谢。
Travel Costs-first col is travellerId and the third col is travelCost
Travel Balances - the first col is travellerId and third col is travelBalance
最佳答案
在设计程序时,并行数据结构通常很难使用。在这种情况下,最好使用id
,costs
和balance
创建Traveler类。将它们存储在键为traveller.id的地图中。读取CSV时,必要时添加一个旅行者,否则更新现有旅行者costs
或balance
。 id
不必在Traveler中,因为它在Map键中,但通常是个好主意。