我有一個csv文件,它定義了不同貨幣之間的關係。因此,要了解一種貨幣與另一種貨幣之間的關係,我決定使用Map of Map,其中的關鍵字將是源貨幣名稱,並且值將再次爲Map(關鍵字:目標貨幣名稱,值:關係類型)。通過擁有這樣的數據結構,我可以通過尾遞歸來找到源貨幣與目標貨幣之間的關係。Java csv庫創建映射給定關係矩陣圖
示例CSV文件:
/AUD CAD CNY CZK DKK EUR GBP JPY NOK NZD USD
AUD 1美元美元美元美元美元美元美元美元美元d
CAD USD 1美元美元美元美元美元美元USD USD d
CNY USD USD 1 USD USD USD USD USD USD USD D
要創建這樣的數據結構,我創建了下面的方法,但它看起來過於冗長。所以我想知道是否有已經存在的庫可以解決我的目的。我嘗試了Apache常見的IO,但無法得到我正在尋找的東西。 方法:
公共靜態地圖> generateCurrencyMatrix( 字符串currencyMatrixFilePath){ 地圖> currMatrixContext = 新的HashMap>(); Map termCurrencies = new HashMap();
// try with resources to close in case of exception
try (BufferedReader br = new BufferedReader(new FileReader(
currencyMatrixFilePath))) {
String line;
boolean headerLineIndicator = true;
while ((line = br.readLine()) != null) {
if (headerLineIndicator) {
List<String> termCurr = Arrays.asList(line
.split(Constant.delimiter));
IntStream.range(1, termCurr.size()).forEach(i -> {
termCurrencies.put(i, termCurr.get(i).trim());
});
headerLineIndicator = false;
} else {
List<String> relationship = Arrays.asList(line
.split(Constant.delimiter));
Map<String, String> relation = new HashMap<String, String>();
IntStream.range(1, relationship.size()).forEach(
i -> {
relation.put(termCurrencies.get(i).trim(),
relationship.get(i).trim());
});
currMatrixContext.put(relationship.get(0).trim(), relation);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return currMatrixContext;
}
確實該地圖的參數化版本看起來像地圖>上下文;關鍵是哪裏的columnName和值是列?然後通過關係向後引用爲關係,其中值是列中的鍵,鍵是否在值中? –
AnthonyJClink