2017-08-03 1 views
0

Ich habe eine CSV-Datei, die die Beziehung zwischen verschiedenen Währungen definiert. Um die Beziehung zwischen einer Währung und einer anderen kennen zu lernen, entschied ich mich für Map of Map, wobei der Schlüssel der Name der Quellwährung ist und der Wert wieder Map (Schlüssel: Name der Zielwährung, Wert: Beziehungstyp) ist. Durch diese Datenstruktur kann ich eine Tail-Rekursion durchführen, um die Beziehungen zwischen Quell- und Zielwährung zu finden.Java-CSV-Bibliothek zum Erstellen von Karte der Karte mit einer Beziehungsmatrix

CSV-Beispieldatei:
/AUD CAD CNY CZK DKK EUR GBP JPY NOK NZD USD
AUD 1 USD USD USD USD USD USD USD USD USD D
CAD USD 1 USD USD USD USD USD USD USD USD D
CNY USD USD 1 USD USD USD

Um eine solche Datenstruktur zu erstellen, habe ich unten die Methode erstellt, aber sie sieht zu ausführlich aus. Ich möchte also wissen, ob es bereits eine Bibliothek gibt, die meinen Zweck erfüllen kann. Ich versuchte Apache Common IO, konnte aber nicht bekommen, wonach ich suchte. Methode:
public static Map> generateCurrencyMatrix ( String currencyMatrixFilePath) { Map> currMatrixContext = neue HashMap>(); Karte 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; 
} 
+0

sieht die parametrisierte Version dieser Map aus wie Map > Kontext; wo ist der Schlüssel der columnName und die Werte sind die Spalte? dann rückwärts referenziert nach Beziehung als Relationen wobei der Wert ein Schlüssel in einer Spalte ist und ein Schlüssel im Wert ist? – AnthonyJClink

Antwort

0

Ich dachte, ich habe die Anforderung nicht verstanden, ich denke, Sie können MultiValueMap versuchen.

Verwandte Themen