如何比较Java中的两个列表并根据每个组合打印结果?

时间:2011-07-03 17:08:52

标签: java

我想根据价格矩阵计算每个车站之间的票价:

        a  b c 

  a     0  2 3
  b     4  0 1
  c     7  2 0

示例:from a to b根据上述价格矩阵中的值打印2from c to a打印7

在这里,我想根据两个电台列表打印铁路票价:“from:”列表和“to:”列表。我想在比较后打印票价。每种组合都有固定的票价。例如站a到站b,票价是10.对于任何一个站到其他站都有固定票价。

2 个答案:

答案 0 :(得分:1)

我会创建一个类,负责存储票价。

public class FareStorage {
    Map<TownCombination, Double> fares;

    //...

    public double getFare(String townA, String townB) {
        return fares.get(new TownCombination(townA, townB));
    }

    public void addFare(String townA, String townB, double fare) {
        fares.put(new TownCombination(townA, townB));
    }

    class TownCombination {
        String town1;
        String town2;

        //If a fare from A to B is equals the fare from B to A, 
        //then the A-B and the B-A combinations should be equal. 
        //Override hashCode and equals the way you want.  
    }
}

这不完整,但我希望你明白这个想法。这就是你如何使用它:

        FareStorage storage = new FareStorage();
        storage.addFare("A", "B", 10.2);

        //....
        double fare = storage.get("A", "B");

答案 1 :(得分:0)

您也可以使用guava's Table

<强>〔实施例:

Table<Integer, String, String> table = HashBasedTable.create();
table.put(1, "a", "1a");
table.put(1, "b", "1b");
table.put(2, "a", "2a");
table.put(2, "b", "2b");