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

最佳答案

在设计程序时,并行数据结构通常很难使用。在这种情况下,最好使用idcostsbalance创建Traveler类。将它们存储在键为traveller.id的地图中。读取CSV时,必要时添加一个旅行者,否则更新现有旅行者costsbalanceid不必在Traveler中,因为它在Map键中,但通常是个好主意。

08-04 16:11